<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wlg9527的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wlg9527</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wlg9527]]></copyright><item><title><![CDATA[23种设计模式知识点汇总]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/122862055</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/122862055</guid><author>wlg9527</author><pubDate>Thu, 10 Feb 2022 16:05:54 +0800</pubDate><description><![CDATA[单例模式、线程安全与线程不安全]]></description><category></category></item><item><title><![CDATA[【每天8题】JVM高频面试题]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/122191957</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/122191957</guid><author>wlg9527</author><pubDate>Tue, 28 Dec 2021 15:50:23 +0800</pubDate><description><![CDATA[一、哪些是GC Roots ?

在虚拟机栈（栈帧中的本地变量表）中引用的对象，譬如各个线程被调用的方法堆栈中使用到的参数、局部变量、临时变量
	在方法区中常量引用的对象，譬如字符串常量池（String Table）里的引用
	在方法区中类静态属性引用的对象，譬如java类的引用类型静态变量
	在本地方法栈中JNI（即通常所说的的native方法）引用的对象
	Java虚拟机内部的引用，如基本数据对应的Class对象，一些常驻的异常对象（比如NullpointException、outofMemoryErr]]></description><category></category></item><item><title><![CDATA[【每天8题】JVM高频面试题]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/122171668</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/122171668</guid><author>wlg9527</author><pubDate>Mon, 27 Dec 2021 15:11:40 +0800</pubDate><description><![CDATA[1、对象在哪块内存分配？

数组和对象在堆内存分配，某些对象没有逃逸出方法，可能被优化为在栈上分配

2、谈谈JVM中的常量池

a.字符串常量池：存放在堆中，包括String对象执行intern()方法后存的地方，双引号直接引用的字符串

b.运行时常量池：constant_pool,JVM定义的概念

3、谈动态年龄判断

a.这里涉及到-XX：TargetSurvivorRatio参数，Survivor区的目标使用率默认为50，即survivor区对象目标使用率为50%

b.surv...]]></description><category></category></item><item><title><![CDATA[oracle 数据库优化]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107461292</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107461292</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 13:21:17 +0800</pubDate><description><![CDATA[1、I/O优化

降低HWM：尽量用TRUNCATE代替DELETE、重构表
	减少因内存不足导致的等待：减少union、distinct、减少orderby，这些占内存
	减少网络传输等待：减少dblink，将要访问的远程的表接过来一次，以后直接访问这个表
2、执行计划（数据库访问数据的路径）

执行计划简单的讲就是数据库如何访问数据的路径，从数据库访问到一条数据的方法有多种，执行计划会从众多方案中通过各种比较选出开销最小（CBO模式）一个访问路径，它会因很多因素的改变受到影响。

oracle访问数据的]]></description><category></category></item><item><title><![CDATA[hibernate经典问题]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107461169</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107461169</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 12:51:26 +0800</pubDate><description><![CDATA[一、hibernate 中对象的三种状态

瞬时态(临时态、自由态):不存在持久化标识OID，尚未与 Hibernate Session 关联对象， 被认为处于瞬时态，失去引用将被 JVM 回收持久态：存在持久化标识 OID，与当前 session 有关联，并且相关联的 session 没有关闭 ， 并且事务未提交脱管态(离线态、游离态):存在持久化标识 OID，但没有与当前 session 关联，脱管状态 改变 hibernate 不能检测到



二、hibernate 的缓存机制

Hi...]]></description><category></category></item><item><title><![CDATA[kafka相关]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107461029</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107461029</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 12:36:31 +0800</pubDate><description><![CDATA[转载：https://blog.youkuaiyun.com/qq_28900249/article/details/90346599
]]></description><category></category></item><item><title><![CDATA[MQ相关]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107461005</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107461005</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 12:33:34 +0800</pubDate><description><![CDATA[转载https://blog.youkuaiyun.com/ThinkWon/article/details/104588612?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&amp;depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.none]]></description><category></category></item><item><title><![CDATA[dubbo入门]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107460688</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107460688</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 12:26:12 +0800</pubDate><description><![CDATA[由于篇幅过长，软链接转载：https://baijiahao.baidu.com/s?id=1651785365950094625&amp;wfr=spider&amp;for=pc

1、概念：

Dubbo 是一款高性能 Java RPC 架构。它实现了面向接口代理的 RPC 调用，服务注册和发现，负载均衡，容错，扩展性等等功能。

2、结构：

Dubbo 大致上分为三层，分别是：

业务层

RPC 层

Remoting 层

3、dubbo调用工作流

工作流涉及到服务提供者(Provider)]]></description><category></category></item><item><title><![CDATA[详解抽象类和接口的区别]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107459721</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107459721</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 11:24:35 +0800</pubDate><description><![CDATA[1、抽象类要被子类继承，接口要被类实现

2、接口只能做方法声明，抽象类既能做方法声明，也可以做方法实现

3、接口里的定义的变量只能是公共的静态常量，而抽象类是中的变量是普通变量

4、接口是设计的结果，抽象类是重构的结果。

5、抽象类和接口都是用来抽象具体对象的，但是接口的抽象级别最高。

6、抽象类可以有具体的方法和属性，接口只能有抽象方法和不可变常量

7、抽象类主要用来抽象类别，接口主要用来抽象功能


...]]></description><category></category></item><item><title><![CDATA[数据库的存储过程了解一下]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107459406</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107459406</guid><author>wlg9527</author><pubDate>Mon, 20 Jul 2020 11:12:30 +0800</pubDate><description><![CDATA[存储过程：就是一些编译好了的 sql 语句，这些 SQL 语句代码像一个方法一样实现一些功能（对单表或多表的增删改查），然后再给这个代码块取一个名字，在用到这个功能的时候调用他就行了。
  优点：
  1、存储过程因为 SQL 语句已经预编译过了，因此运行的速度比较快。
  2、存储过程在服务器端运行，减少客户端的压力。
  3、允许模块化程序设计，就是说只需要创建一次过程，以后在程序中就可以调用该过程任意次，类似方法的复用。
  4、减少网络流量，客户端调用存储过程只需要传存储过程名和相关参数即可，与传输]]></description><category></category></item><item><title><![CDATA[elasticsearch的分布式架构基本原理]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/107333756</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/107333756</guid><author>wlg9527</author><pubDate>Tue, 14 Jul 2020 11:54:55 +0800</pubDate><description><![CDATA[首先，es 的设计理念就是分布式搜索引擎，底层还是基于lucene的

核心思想就是在多台机器上启动多个es进程实列，组成一个es集群。

es中存储数据的基本单位是索引，假设你要在es中存储数据，首先就要在es中创建一个索引，所有的数据都写到这个索引里面去，一个索引差不多相当于mysql里面的一张表。

index-&gt;type-&gt;mapping-&gt;document-&gt;filed

1、index 相当于mysql里的一张表

2、type:一个index里面可以有很多type,每个]]></description><category></category></item><item><title><![CDATA[详谈Mybatis和Hibernate 的区别]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106521997</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106521997</guid><author>wlg9527</author><pubDate>Wed, 03 Jun 2020 13:04:18 +0800</pubDate><description><![CDATA[Mybatis是一个不完全的ORM（对象关系映射）框架，因为它需要程序员自己编写sql语句，而Hibernate是一个完全的ORM框架。


Mybatis学习门槛低，简单易学，而Hibernate较为复杂，不易精通。


Mybatis可以直接编写原生态的sql,可以严格控制sql执行性能，进行更细致的sql优化，灵活度高，非常适合对关系型数据模型不高的软件开发，例如互联网软件，企业运营类软件，而Hibernate不能编写sql语句，灵活度不高，但对于关系模型要求高的软件，可以节省很多代码的开发，提高..]]></description><category></category></item><item><title><![CDATA[你不知道的缓存穿透、缓存雪崩、缓存击穿及解决方案]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106521833</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106521833</guid><author>wlg9527</author><pubDate>Wed, 03 Jun 2020 12:51:20 +0800</pubDate><description><![CDATA[缓存雪崩
首先，作为一个缓存系统，查询都是通过key去查询，如果查到不存在的value，那么，将会去后台系统db中查询，一些恶意的请求会故意查询不存在的value，并且请求量很大，这样就对后台系统造成很大的压力，这就是所谓的缓存雪崩。
解决方案：
方案一：对不存在的key也要进行缓存，设置较短的存活时间或者对key对应的数据insert后进行缓存清理
方案二：对一定不存在的key进行过滤，对可能存在的key hash到一个bitmap中，然后，查询的时候通过这个bitmap过滤

...]]></description><category></category></item><item><title><![CDATA[FreeSwitch如何实现会话保持]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106273671</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106273671</guid><author>wlg9527</author><pubDate>Fri, 22 May 2020 09:56:28 +0800</pubDate><description><![CDATA[场景介绍

该篇文章主要用于介绍如何使用FreeSWITCH实现通讯系统中常见的多人来电功能。
具体场景如下：
A与B正在通话中，此时C拨打A/B，FreeSWITCH发送消息给A/B提示有新电话进来，A/B收到提示后，可以选择不予理睬或者保持当前通话接通C。在与C通话完毕后，在还没挂断的情况下，可以继续返回与B/A继续通话。

设置拨号方案

在文件/usr/local/freeswitch/conf/dialplan/default.xml中增加如下语句：


&lt;!-- 用于将来电转入队列中 ..]]></description><category></category></item><item><title><![CDATA[Freeswitch]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106252081</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106252081</guid><author>wlg9527</author><pubDate>Fri, 22 May 2020 09:51:40 +0800</pubDate><description><![CDATA[概念：开源的、电话交互平台

优势：

跨平台
	伸缩性
	开源的
	支持SIP等多种协议
	是一个B2BUA,背靠背的用户代理
大规模呼叫中心的应用可以提供ＨＡ(双击热备方案) 和Cluster(集群)方案解决高可用性和大容量呼叫中心的需求

Freeswitch 中实现排队功能的的模块：

mod_fifo 先进先出

mod_callcenter


...]]></description><category></category></item><item><title><![CDATA[Freeswitch总体架构]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106252292</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106252292</guid><author>wlg9527</author><pubDate>Fri, 22 May 2020 09:51:20 +0800</pubDate><description><![CDATA[由一个稳定的核心core及一些外围模块组成，这些外围模块又根据功能的不同分为Endpoint、codec、Dialplan、Application

FS 内部使用线程模型来处理并发请求，每个连接都是在单独的线程中进行处理，不同线程之间通过Metux互斥访问共享资源，并通过消息异步事件进行通信，这种架构能够很高的并发，并且多核环境中运算能均匀的分布到多CPU和单CPU的核心上，fs的绝大部分的功能都在外围的模块中实现，外围模块是可以动态加载的，外围模块通过核心提供的public API 与核心通信，而核心通]]></description><category></category></item><item><title><![CDATA[Freeswitch 与callcenter]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106250555</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106250555</guid><author>wlg9527</author><pubDate>Thu, 21 May 2020 10:05:08 +0800</pubDate><description><![CDATA[callcenter模块实现呼叫队列

ACD自动坐席分配功能

mod_cti模块定义了CTI调用的接口
]]></description><category></category></item><item><title><![CDATA[FS 呼叫是怎么工作的？]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106247981</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106247981</guid><author>wlg9527</author><pubDate>Thu, 21 May 2020 01:05:27 +0800</pubDate><description><![CDATA[假设主叫号码是1000.被叫号码是1001

1000的SIP话机作为UAC会发送INVITE 请求到FS的5060端口，该UAS收到正确的INVITE后返回100相应码，注意，这边UAS收到的请求后都要进行鉴权，默认是ACL，但是它默认是不通过的，所以一般会使用密码鉴权，安全性较好，如果鉴权通过，FS就取到了用户信息，接下来电话进入路由阶段，开始查找Diaplan，由于该用户的Content是默认的，路由会首先去default这个dialplan查起，然后找到1001这个用户，执行bridge user/]]></description><category></category></item><item><title><![CDATA[Freeswitch常见问题]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106247931</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106247931</guid><author>wlg9527</author><pubDate>Thu, 21 May 2020 00:39:09 +0800</pubDate><description><![CDATA[FreeSwitch下配置DID的方法

首先介绍下什么是DID? 翻译为中文为“直接向内拨号”，该服务是由电话公司提供的，它使用户能够直接拨打PBX或VOIP系统中的分机号码，而无需求助于总机或自动话务系统。

现在要实现这样一个功能 - 通过手机或座机拨打一个号码（例如：01088888888），可以直接联系到VOIP系统(FreeSwitch系统)的1008这个用户。如下图所示：

手机/座机 -------------------&gt; 01088888888 ---------------&gt]]></description><category></category></item><item><title><![CDATA[sip响应状态码]]></title><link>https://blog.youkuaiyun.com/wlg9527/article/details/106247874</link><guid>https://blog.youkuaiyun.com/wlg9527/article/details/106247874</guid><author>wlg9527</author><pubDate>Thu, 21 May 2020 00:36:29 +0800</pubDate><description><![CDATA[sip状态码 类型 状态说明
临时应答  
100 Trying 正在处理中
180 Ringing 振铃
181 call being forwarder 呼叫正在前向
182 queue 排队
181* session progress 会话进行
会话成功(2XX)  
200 OK 会话成功
重定向(3XX)  
300 multiple 多重选择
301 move...]]></description><category></category></item></channel></rss>