自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (2)
  • 收藏
  • 关注

原创 WebRTC架构和通话原理

WebRTC架构和通话原理以及一对一通话流程

2023-02-15 18:23:46 418

原创 opensips容器通过keepalived实现高可用

opensips容器(此docker为Debian系统)通过keepalived实现高可用

2023-01-04 15:23:49 421

转载 系统扩展方式 scale up和scale out(转载)

什么是scale up和scale out?   许多存储系统开始很简单,但当需要进行系统扩展时就会变得复杂。升级存储系统最常见的原因是需要更多的容量,以支持更多的用户,文件,应用程序或连接的服务器。   但是通常,存储系统的升级不只是需要容量,系统还对其他存储资源有额外需求,即带宽和计算能力。如果没有足够的I/O带宽,将出现用户或服务器的访问瓶颈;没有足够的计算能力,常用的存储软件如快照、复制和卷管理等服务都...

2022-03-02 18:50:26 723

原创 MySQL数据库之高级查询

分组查询1.查询为什么要分组:默认情况下汇总函数是对全表范围内的数据做统计;GROUP BY子句的作用是通过一定的规则将一个数据集划分成若干 个小的区域,然后针对每个小区域分别进行数据汇总处理。2.分组查询对SELECT子句的要求:查询语句中如果含有GROUP BY子句, 那么SELECT子句中的内容就必须要遵守规定:SELECT子句中可以包括聚合函数,或者GROUP BY子句的分组列,其余内容均不可以出现在SELECT子句中。例如,SELECT deptno , COUNT(*), AVG

2022-02-14 17:56:56 642

原创 学习Scala_第九篇笔记

高阶函数案例需求:模拟 Map 映射、Filter 过滤、Reduce 聚合object TestFunction { def main(args: Array[String]): Unit = { // (1)map 映射 def map(arr: Array[Int], op: Int => Int) = { for (elem <- arr) yield op(elem) } val arr = map(Array(1, 2, 3, 4), (x: Int) => {

2022-01-28 18:57:55 1607

原创 学习Scala_第八篇笔记

Scala函数高级匿名函数1.说明没有名字的函数就是匿名函数。(x:Int)=>{函数体} x:表示输入参数类型;Int:表示输入参数类型;函数体:表示具体代码逻辑2.传递匿名函数至简原则:(1)参数的类型可以省略,会根据形参进行自动的推导(2)类型省略之后,发现只有一个参数,则圆括号可以省略;其他情况:没有参数和参数超过 1 的永远不能省略圆括号。(3)匿名函数如果只有一行,则大括号也可以省略(4)如果参数只出现一次,则参数省略且后面参数可以用_代替package exceedd

2022-01-28 14:22:00 760

原创 学习Scala_第七篇笔记

Scala函数式编程函数式编程概念:解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封装好的步骤,解决问题。例如:请求->用户名、密码->连接 JDBC->读取数据库Scala 语言是一个完全面向对象编程语言。万物皆对象对象的本质:对数据和行为的一个封装Scala 语言是一个完全函数式编程语言。万物皆函数。函数的本质:函数可以当做一个值进行传递在 Scala 中函数式编程和面向对象编程完美融合在一起了。Scala函数基本语法:函数和方法

2022-01-28 00:45:41 90

原创 学习Scala_day01_第六篇笔记

Scala流程控制分支控制 if-elseScala 中 if else 表达式其实是有返回值的,具体返回值取决于满足条件的代码体的最后一行内容。object TestIfElse { def main(args: Array[String]): Unit = { println("input age") var age = StdIn.readInt() val res :String = if (age < 18){ "童年" }else if(age>=18 &&

2022-01-27 22:35:29 108

原创 学习Scala_day01_第五篇笔记

Scala运算符Scala 运算符的使用和 Java 运算符的使用基本相同,只有个别细节上不同。Java 和 Scala 中关于==的区别Java:==比较两个变量本身的值,即两个对象在内存中的首地址;equals 比较字符串中所包含的内容是否相同。 String s1 = "abc"; String s2 = new String("abc"); System.out.println(s1 == s2); System.out.println(s1.equals(s2));}输出结果

2022-01-27 19:12:49 98

原创 学习Scala_day01_第四篇笔记

Scala数据类型Scala中一切数据都是对象,都是Any的子类。Scala中数据类型分为两大类:数值类型(AnyVal)、 引用类型(AnyRef),不管是值类型还是引用类型都是对象。Scala数据类型仍然遵守,低精度的值类型向高精 度值类型,自动转换(隐式转换)。Scala中的StringOps是对Java中的String增强。Unit:对应Java中的void,用于方法返回值的位置,表 示方法没有返回值。Unit是 一个数据类型,只有一个对象就是()。Void不是数据类型,只是一个关键字。

2022-01-27 17:15:21 450

原创 学习Scala_day01_第二篇笔记

Scala变量和常量(1)声明变量时,类型可以省略,编译器自动推导,即类型推导(与Java不同)(2)类型确定后,就不能修改,说明 Scala 是强数据类型语言。(与JavaScript不同)(3)变量声明时,必须要有初始值(与Java不同)(4)在声明/定义一个变量时,可以使用 var 或者 val 来修饰,var 修饰的变量可改变,val 修饰的变量不可改。(5)var 修饰的对象引用可以改变,val 修饰的对象则不可改变,但对象的状态(值)却是可以改变的。(比如:自定义对象、数组、集合等等)

2022-01-27 10:06:40 1905

原创 学习Scala_day01_第一篇笔记

Scala语言特点Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)Scala源代码(.scala)会被编译成Java字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无

2022-01-27 09:59:29 303

原创 学习Scala_day01_第三篇笔记

变量和常量object TestVar{ def main(args: Array[String]): Unit = {// (1)声明变量时,类型可以省略,编译器自动推导,即类型推导 var age = 18 age = 30// (2)类型确定后,就不能修改,说明Scala是强数据类型语言。 // age = "20" //错误// (3)变量声明时,必须要有初始值(**与Java不同**) // var name //错误// (4

2022-01-27 07:49:18 271

翻译 深入理解构造函数,拷贝构造函数

1、构造函数构造函数的作用l  在对象被创建时使用特定的值构造对象,将对象初始化为一个特定的初始状态。l  例如:l  希望在构造一个Clock类对象时,将初试时间设为0:0:0,就可以通过构造函数来设置。构造函数的形式l  函数名与类名相同;l  不能定义返回值类型,也不能有return语句;l  可以有形式参数,也可以没有形式参数;l  可以是内联函数;l  可以重载;l  可以带默认参数值。...

2018-04-29 11:01:04 240

原创 深入理解指针函数与函数指针

1、指针函数:本质是一个函数。函数返回类型是某一类型的指针   格式:  类型标识符    *函数名(参数表)                   int *f(x,y);float *fun();float *p;p = fun(a);int* find(void); int * find(){ int *pp ; pp= 0; return pp;...

2018-04-19 09:52:57 244

原创 深入理解new/delete

c语言中提供了malloc 和free 两个系统函数,完成对堆内存的申请和释放。而c++则提供了两关键字 new 和delete ;new/new[]用法:开辟单变量地址空间int *p = new int; //开辟大小为sizeof(int)空间int *a = new int(5); //开辟大小为sizeof(int)空间,并初始化为5开辟数组空间一维: int *a = new int[...

2018-04-05 21:36:23 141

原创 深入理解C++引用

概念:变量名,本身是一段内存的引用,即别名(alias)。此处引入的引用,是为已有变量起一个别名。声明如下:int main(){ int a; int &amp;b=a;}规则:1、引用没有定义,是一种关系型声明。声明它和原有某一变量(实体)的关系。故而类型与源类型保持一致,且不分配内存,与被引用的变量有相同的地址;2、声明的时候必须初始化,一经声明,不可变更;3、可对引用,再次引用,多...

2018-04-05 12:30:14 183

原创 深入理解#include <iomanip>

io代表输入输出,manip是manipulator(操纵器)的缩写(在C++上只能通过输入缩写才有效。)主要是对cin,cout之类的一些操纵运算子,比如setfill,setw,setbase,setprecision等等。它是I/O流控制头文件,就像C里面的格式化输出一样.setw(n)用法: 通俗地讲就是预设宽度 如 cout&lt;&lt;setw(5)&lt;&lt;255&lt;&l...

2018-04-04 23:55:01 429

[挑战程序设计竞赛(第2版)].巫泽俊.

《挑战程序设计竞赛(第2版)》对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己丰富的参赛经验,对严格筛选的110 多道各类试题进行了由浅入深、由易及难的细致讲解,并介绍了许多实用技巧。每章后附有习题,供读者练习,巩固所学。   《挑战程序设计竞赛(第2版)》适合程序设计人员、程序设计竞赛爱好者以及高校计算机专业师生阅读。

2018-04-04

ACM程序设计培训教程

本书针对ACM程序竞赛出现比较多的16个方面的问题,通过案例的方式说明解决问题的方法。由于数据结构使用非常多,对不属于16个专门问题的知识我们也进行了介绍。 本书不是这些专门问题的教科书,所以对这些问题所涉及知识的介绍不多,主要是分析一个案例,介绍专属于ACM程序设计的方法和技巧。

2018-04-04

空空如也

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

TA关注的人

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