PerKins Zhu

Le vent se lève,il faut tenter de vivre.

导航

摘要: 对于无法在工作中使用Scala和kotlin开发的人,Vavr是一个很好的折中的方案,提供了持久的数据类型和功能控制结构。这里对Vavr里面的常用模块做一些简单的介绍,需要详细了解的请去官网查看文档(https://www.vavr.io/vavr-docs/)。 vavr支持多种数据结构,弥补了常 阅读全文

posted @ 2020-07-01 01:07 PerKins.Zhu 阅读(974) 评论(0) 推荐(0) 编辑

摘要: jar包依赖冲突,版本不兼容会导致各种各样的问题。这里推荐一款sbt插件用于查找项目中的jar包依赖关系,通过该插件可以轻松的看出某个jar包依赖哪些jar,以及某个jar被哪些jar所依赖。此外该插件还可生成可视化图形用于查看依赖关系。 插件地址:https://github.com/jrudol 阅读全文

posted @ 2018-11-20 20:04 PerKins.Zhu 阅读(1703) 评论(0) 推荐(0) 编辑

摘要: 今天遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”。现将该问题的原因以及解决办法记录一下。 先理解一下系统变量path和classpath的作用。 path:可执行命令的搜索路径,在该路径下搜索可以运行的程序或批处理文件。 命令 阅读全文

posted @ 2018-10-11 19:34 PerKins.Zhu 阅读(18741) 评论(1) 推荐(1) 编辑

摘要: 请求安全性: 服务器端在接收到请求的时候,要主动鉴别该请求是否有效,是否可接受。 token:已登陆用户的识别码 解决的问题:用户调用接口时,不用每次都带上用户名和密码,避免了频繁在网络中传输密码被截获的风险。 使用场景:用户登录系统时传入用户名和密码,服务器校验成功之后,根据uuid等参数生成to 阅读全文

posted @ 2018-09-28 09:01 PerKins.Zhu 阅读(6436) 评论(1) 推荐(2) 编辑

摘要: 用scala有一年多了,对于scala中的Option和Try使用的较为频繁,对其应用场景相对熟悉一些。而对于Either,仔细回想一下却发现几乎(完全)没有使用过,其实并不是没有遇到过Either的使用场景,只是遇到的时候不知道能够使用Either来解决此问题。 昨天在网上偶然看到一篇介绍Eith 阅读全文

posted @ 2018-08-09 22:28 PerKins.Zhu 阅读(1460) 评论(0) 推荐(0) 编辑

摘要: 工作中偶然发现Scala构造方法中的参数,无论是否有val/var修饰都可以顺利编译运行,如下: 那么两者的区别在哪里呢?对于case class呢?其区别又在哪里?其应用场景又在哪里呢?下面就辨析一下如下几个类的区别 单纯的从代码中来看,发现不了什么区别,只是简单的多了一个val的修饰符。为了一探 阅读全文

posted @ 2018-07-13 23:34 PerKins.Zhu 阅读(7590) 评论(1) 推荐(1) 编辑

摘要: 相对于java的类型系统,scala无疑要复杂的多!也正是这复杂多变的类型系统才让OOP和FP完美的融合在了一起! Nothing: 如果直接在scala-library中搜索Nothing的话是找不到了,只能发现一个Nothing$的类(后面再说Nothing$和Nothing的关系)。要想看到N 阅读全文

posted @ 2017-11-22 10:33 PerKins.Zhu 阅读(12690) 评论(1) 推荐(4) 编辑

摘要: 在处理业务的时候,有时候需要根据情况使用不同的线程处理模型来处理业务逻辑,这里演示一下常见的线程模型使用技巧。 1、Future模型 前面的章节中提到过Future模型,该模型通常在使用的时候需要结合Callable接口配合使用。Future:未来的、将来的,再结合Callable大概可以明白其功能 阅读全文

posted @ 2017-09-22 10:16 PerKins.Zhu 阅读(10353) 评论(2) 推荐(6) 编辑

摘要: 如同数据库连接一样,线程的创建、切换和销毁同样会耗费大量的系统资源。为了复用创建好的线程,减少频繁创建线程的次数,提高线程利用率可以引用线程池技术。使用线程池的优势有如下几点: 1、保持一定数量的线程,减少了线程频繁创建和销毁资源消耗。 2、使用线程的时候直接由线程池中取出线程,省去了创建线程的时间 阅读全文

posted @ 2017-09-04 19:48 PerKins.Zhu 阅读(1418) 评论(0) 推荐(2) 编辑

摘要: 系统要实现某个全局功能必定要需要各个子模块之间的协调和配合,就像一个团队要完成某项任务的时候需要团队各个成员之间密切配合一样。而对于系统中的各个子线程来说,如果要完成一个系统功能,同样需要各个线程的配合,这样就少不了线程之间的通信与协作。常见的线程之间通信方式有如下几种: 1、wait和notify 阅读全文

posted @ 2017-08-30 14:32 PerKins.Zhu 阅读(7542) 评论(3) 推荐(2) 编辑

摘要: 在多线程中,每个线程的执行顺序,是无法预测不可控制的,那么在对数据进行读写的时候便存在由于读写顺序多乱而造成数据混乱错误的可能性。那么如何控制,每个线程对于数据的读写顺序呢?这里就涉及到线程锁。 什么是线程锁?使用锁的目的是什么?先看一个例子。 调用testSimple()方法开启两个线程执行账户金 阅读全文

posted @ 2017-08-19 13:33 PerKins.Zhu 阅读(2426) 评论(1) 推荐(2) 编辑

摘要: 在Thread类中提供了可以停止线程的方法(包括杀死和挂起): @Deprecated public final void stop(){} @Deprecated public final void suspend(){} stop 和 suspend 添加的有Deprecated注释,也即是该方 阅读全文

posted @ 2017-08-13 16:47 PerKins.Zhu 阅读(2218) 评论(0) 推荐(1) 编辑

摘要: java中,启动线程通常是通过Thread或其子类通过调用start()方法启动。 常见使用线程有两种:实现Runnable接口和继承Thread。而继承Thread亦或使用TimerTask其底层依旧是实现了Runnabel接口。考虑到java的单继承的限制,所以在开发过程中大部分情况在使用线程的 阅读全文

posted @ 2017-08-11 21:38 PerKins.Zhu 阅读(1613) 评论(0) 推荐(1) 编辑

摘要: 一、为什么要使用多线程? 【使计算机所有资源在执行任务的时候能够全部利用上,以提升计算机资源利用率的方式来提升系统执行效率】 CPU的单核运行速度由于硬件技术问题已经遇到瓶颈,而概念性的“光脑”貌似离我们还很遥远,现在的计算机性能提升方向是向多核发展。多核同时工作,协同完成任务。大家熟知的神威·太湖 阅读全文

posted @ 2017-08-11 15:30 PerKins.Zhu 阅读(2497) 评论(2) 推荐(3) 编辑

摘要: “高并发和多线程”总是被一起提起,给人感觉两者好像相等,实则 高并发 ≠ 多线程 多线程是完成任务的一种方法,高并发是系统运行的一种状态,通过多线程有助于系统承受高并发状态的实现。 高并发是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问或者socke 阅读全文

posted @ 2017-08-11 11:35 PerKins.Zhu 阅读(33633) 评论(2) 推荐(13) 编辑

摘要: 原文链接: spring源码浅析——IOC 转载请注明出处! 在读之前应该明白其重点:读spring读的不是其具体的技术实现,读的是其系统层面的结构和设计! spring漂亮就漂亮在她的结构,包括接口和抽象类的灵活使用! IOC模块只是spring框架中的一个模块,这里只对该模块进行分析(使用版本: 阅读全文

posted @ 2017-03-05 20:57 PerKins.Zhu 阅读(2034) 评论(2) 推荐(1) 编辑

摘要: 陆陆续续做了有一个月,期间因为各种技术问题被多次暂停,最关键的一次主要是因为存储容器使用的普通二叉树,在节点权重相同的情况下导致树高增高,在进行遍历的时候效率大大降低,甚至在使用递归的时候导致栈内存溢出。后来取消递归遍历算法,把普通的二叉排序树升级为平衡二叉树这才解决这些问题。着这个过程中把栈、队列 阅读全文

posted @ 2016-09-03 08:31 PerKins.Zhu 阅读(630) 评论(0) 推荐(0) 编辑

摘要: 二叉排序树集中了数组的查找优势以及链表的插入、删除优势,因此在数据结构中占有一定的地位。但在一定的情况下二叉排序树又有可能变为链表,例如插入从1~100的数,这时进行数据查找的效率就要降低。 为了解决二叉排序树这种左右子树深度不均匀的情况引入了一种平衡二叉树(AVLTree):任何一个节点的左右子树 阅读全文

posted @ 2016-08-30 23:04 PerKins.Zhu 阅读(25758) 评论(5) 推荐(3) 编辑

摘要: 抽象工厂模式:用于解决“多个不同类型的对象需要被同一处调用且同一类型的不同对象需要被多处调用”的情景。 示例说明:工厂A(FactoryA)可以生产电脑A(ComputerA)和手机A(MobilePhoneA),工厂B(FactoryB)也可以生产电脑B(ComputerB)和手机B(Mobile 阅读全文

posted @ 2016-08-29 16:09 PerKins.Zhu 阅读(273) 评论(0) 推荐(0) 编辑

摘要: 工厂方法模式:让父类在不知道具体实现的情况下成自己功能的调用。实现方法是通过子类继承父类的抽象方法来获取被调用子类。(这里有些DI的味道) 优势:1、可以在不知道具体调用和实现的情况下进行编程 2、更加容易扩展新版本 劣势:1、在客户端需要和具体的产品对象进行耦合,在调用处必须要知道需要调用的具体类 阅读全文

posted @ 2016-08-28 11:44 PerKins.Zhu 阅读(361) 评论(0) 推荐(0) 编辑

2023年11月7日

摘要: 直接使用openssl制作的CA证书,由于没有加入访问机器的“受信任的根证书颁发机构”,导致在chrome等浏览器中访问自签名证书的网站时,会有“不可信任证书”提示,进而导致websocket无法成功建立。 现在通过 mkcert 工具可以颁发自签名CA证书,并同时在加入“受信任的根证书颁发机构” 阅读全文

posted @ 2023-11-07 09:43 PerKins.Zhu 阅读(140) 评论(0) 推荐(0) 编辑

2023年10月12日

摘要: --start 安装教程: https://kamailio.org/docs/tutorials/5.6.x/ 可选直接deb安装或git源码安装 https://kamailio.org/docs/tutorials/5.6.x/kamailio-install-guide-deb/ 常用命令: 阅读全文

posted @ 2023-10-12 16:15 PerKins.Zhu 阅读(81) 评论(0) 推荐(0) 编辑

2023年10月10日

摘要: 配置rtpproxy系统自动启动: 新增 /lib/systemd/system/rtpproxy.service [Unit] Description=rtpproxy start #After=network.target #控制和opensips的启动顺序。opensips需要在rtpprox 阅读全文

posted @ 2023-10-10 10:47 PerKins.Zhu 阅读(28) 评论(0) 推荐(0) 编辑

2023年10月8日

摘要: 安装依赖 apt-get install debhelper default-libmysqlclient-dev gperf libavcodec-dev libavfilter-dev libavformat-dev libavutil-dev libbencode-perl libcrypt- 阅读全文

posted @ 2023-10-08 14:19 PerKins.Zhu 阅读(84) 评论(0) 推荐(0) 编辑

2023年10月7日

摘要: 安装依赖 apt-get install gcc bison flex make openssl libmysqlclient-dev perl libdbi-perl libdbd-mysql-perl libdbd-pg-perl libfrontier-rpc-perl libterm-rea 阅读全文

posted @ 2023-10-07 17:44 PerKins.Zhu 阅读(99) 评论(0) 推荐(0) 编辑

2023年9月22日

摘要: 1、随便找个地方,创建个目录 mod_book 2、在里面创建个mod_book.c文件,写入 #include <switch.h> SWITCH_MODULE_LOAD_FUNCTION(mod_book_load); SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_bo 阅读全文

posted @ 2023-09-22 21:24 PerKins.Zhu 阅读(107) 评论(0) 推荐(0) 编辑

摘要: 1、在Debian系统上 成功编译并通过源码安装 freeswitch 2、在src/mod/application/ 目录下新建 mod_helloworld 目录。 2、在 src/mod/application/mod_helloworld/ 目录下创建 mod_helloworld.c 文件 阅读全文

posted @ 2023-09-22 19:04 PerKins.Zhu 阅读(117) 评论(0) 推荐(0) 编辑

摘要: 建议在 Debian 系统中安装# 安装依赖apt install -y gnupg2 wget autoconf lsb-release libtool libtool-bin libtiff-dev uuid-dev pkg-config openssl libssl-dev sqlite3 l 阅读全文

posted @ 2023-09-22 13:41 PerKins.Zhu 阅读(363) 评论(0) 推荐(0) 编辑

2023年9月14日

摘要: 本人在安装FreeSWITCH的时候遇到了相当多的坑,网上很多方法都模棱两可,经常装失败,最后终于装成功后做一下总结 最顺利的安装方式​1. 下载压缩文件​ 下载地址:​ ​ ​http://files.freeswitch.org/freeswitch-releases/​​​ 我选择的下载版本是 阅读全文

posted @ 2023-09-14 12:48 PerKins.Zhu 阅读(481) 评论(0) 推荐(0) 编辑

2023年9月1日

摘要: 1、 visual studio 使用 2017版本的 2、下载 https://github.com/PerkinsZhu/freeswitch/tree/v1.8 源码 错误处理: 一、 下载地址: https://wixtoolset.gallerycdn.vsassets.io/extens 阅读全文

posted @ 2023-09-01 11:11 PerKins.Zhu 阅读(120) 评论(0) 推荐(0) 编辑

2022年3月11日

摘要: 目的:当服务挂掉后自动重启服务 方案一:crontab 定时任务检测与重启。 1、创建服务运行检测与重启脚本: appRestart.sh #!/bin/sh # 进行jar所在目录 cd /opt/app/ source /etc/profile # 查询程序是否存活 project=`ps -e 阅读全文

posted @ 2022-03-11 11:07 PerKins.Zhu 阅读(373) 评论(0) 推荐(0) 编辑

2021年8月17日

摘要: 在理解领域驱动的时候,网上很多大谈理论的文章,这种对于初学者不是太容易接受。根据我自己的学习经历,建议按照如下几个步骤学习: 粗略的看一遍领域驱动的理论,不需要做到每个名词都能理解,知道领域驱动是什么,解决什么问题的,大概有哪几个模块即可。 找一个具体的项目(推荐阿里的cola4),了解定义了几个m 阅读全文

posted @ 2021-08-17 20:38 PerKins.Zhu 阅读(6541) 评论(13) 推荐(10) 编辑

2021年6月9日

摘要: 众所周知,java是基于JVM的开发语言,但能够在JVM上运行的开发语言不仅仅有java,目前还有很热门的kotlin(kotlin不仅仅只能开发Android)、scala、groovy等等。目前国内主要的web开发语言还是以java居多,作为主流的面向对象开发语言,不可否认能够被工业社会所全面接 阅读全文

posted @ 2021-06-09 12:33 PerKins.Zhu 阅读(933) 评论(0) 推荐(1) 编辑

2021年6月3日

摘要: maven构建项目的时候遇到这个错误: 一、直接原因 制定路径下确实没有sqljdbc4.jar文件。 二、根本原因 微软不允许以maven的方式直接下载该文件。 三、解决办法 3.1 手动下载相关库:http://www.microsoft.com/en-us/download/details.a 阅读全文

posted @ 2021-06-03 18:04 PerKins.Zhu 阅读(663) 评论(0) 推荐(0) 编辑

2021年5月26日

摘要: 思路: 后端把文件数据转化为 base64字符串返回给前端、前端ajax获取到字符串之后,解码转换为blob,之后模拟<a>标签点击事件下载文件。 相关代码: /** * <p>将文件转成base64 字符串</p> * * @param path 文件路径 * @return * @throws 阅读全文

posted @ 2021-05-26 16:00 PerKins.Zhu 阅读(962) 评论(0) 推荐(0) 编辑

2018年3月18日

摘要: 在scala中是没有原生线程的,其底层使用的是java的Thread机制。但是在scala中对java Thread进行了封装,实现了更便于操作线程的Future。 官方文档: Futures provide a way to reason about performing many operati 阅读全文

posted @ 2018-03-18 16:19 PerKins.Zhu 阅读(3590) 评论(1) 推荐(2) 编辑