音视频直播(Java)
1 概述 1.1通用直播总体架构 Java在用于视频开发时主要采用的技术框架是FFmpeg和OpenCV。数据库和其他的功能实现可以使用Java Web的相关技术就可以实现。
FFmpeg主要有两种网络传输协议;RTSP、RTMP RTSP;实时流传输协议,是TCP/IP协议体系中的一个应用层协议.RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输。 RTMP;实时消息传输协议)的首字母缩写。该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTM
遇到多个构造器参数时,要考虑用构造器
原文链接:http://www.cnblogs.com/kongkongFabian/p/10246417.html 重叠构造器模式: 创建对象时,我们需要一些必须的参数,从而区分它们,其他可选参数,我们一层一层的赋基本值。这样就提供了用户可选的多种传参方式。 缺点:当有多个参数时,不好处理 JavaBean模式: 通过setter方法,对类进行初始化赋值 Builder模式:(书上最推荐的方式) 书上提供了一个例子,如 NutritionFacts cocaCola = new Nutrit
java23种设计模式-模板方法模式
1 结构 模板方法模式是所有模式中最为常见的几个模式之一,是基于继承的代码复用的基本技术。 模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架,另一些设计师则负责给出这个算法的各个逻辑步骤。代表这些具体逻辑步骤的方法
真实项目中 ThreadLocal 的妙用
一、什么是 ThreadLocal ThreadLocal 提供了线程的局部变量,每个线程都可以通过 set() 和 get() 来对这个局部变量进行操作,但不会和其他线程的局部变量冲突,实现了线程间的据隔离。 简单讲:一个获取用户的请求线程 A,如果向 Th
聊聊dubbo的DubboSwaggerService
序 本文主要研究一下dubbo的DubboSwaggerService DubboSwaggerService dubbo-2.7.2/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/pr
仿概率论系列(一) 开篇引导
仿概率论系列(一) 开篇引导 概率论,一个匿名社交APP(哈哈哈,我是不是应该去收一下广告费?)。 偶尔一次机会接触到概率论,体验了一阵子,产品表达的想法挺好的,为了更好的熟悉这个产品,准备将其中的一两个模块拿出来当实战,所以才会有这个系列~ 回到正题 本
C++ 概率算法 利用蒙特卡罗算法计算圆周率
概率算法大致可分为4种形式: 数值概率算法; 蒙特卡罗算法; 拉斯维加斯算法; 舍伍德算法; 计算蒙特卡罗概率的算法实现: 1 #include "stdio.h"
2 #include "time.h"
3 #include "stdlib.h"
4
5 double MontePI(int n)
6 {
7 double PI;
8 double x, y;
9 int i, sum;
10
11 sum = 0;
turtle角度坐标体系
seth()改变海龟的行进角度 例如 让海龟的方向朝着45°方向行进 turtle.seth(45) 让海龟的方向朝着-135°反方向行进 turtle.seth(-135) turtle.left(angle) ,海龟向左 turtle.left(angle) 例子 绘制Z型曲线 先让海龟向左转45° 然后使用fd向前行进150像素 再让海龟向右转135°,使用fd向前行进300像素 再让海龟向左转135°,使用fd向前行进150像素 然后再运行
【Java】Struts2中Action接受表单的三种方式
在Struts2中,假如有一个登陆页面,输入用户名密码。如何在action中接受呢? 有三种方式:1.使用Action的属性接收参数,2.使用DomainModel接收参数,3.使用ModelDriven接收参数 1.使用action的属性接受参数 只需要在处理的action中定义该私有变量(Bean),即可获取到,例如: import com.opensymphony.xwork2.ActionSupport;
public class LoginAction extends Acti
java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位
生产环境出现CPU占用过高,谈谈你的分析思路和定位 思路:结合Linux和JDK命令一起分析 1、先用top命令找出CPU占比最高的
2、ps -ef|grep java|grep -v grep 或者jps -l进一步定位
3、定位到具体线程或代码
ps -mp 进程编号 -o THREAD,tid,time [-m:显示所有线程 -p pid:进程使用CPU的时间 -o:用户自定义格式]
4、将需要的线程ID转换为16进制格式
printf "%x\n" 有
阻塞和非阻塞的深刻理解 转
阻塞和非阻塞的深刻理解 原来是借助于I/O多路复用,即借助于系统内核去监听文件描述符状态,因为应用程序监听还要调用内核去监听,这样省去一步。(转) 阻塞和非阻塞 阻塞函数在完成其指定的任务以前不允许程序调用另一个函数。例如,程序执行一个读数据的函数调用时,在此函数完成读操作以前将不会执行下一程序语句。当服务器运行到accept语句时,而没有客户连接服务请求到来,服务器就会停止在accept语句上等待连接服务请求的到来。这种情况称为阻塞(blocking)。而非阻塞操作则可以立即完成。比如,
express初步认识
1 // 1. 引入
2 const express = require('express');
3
4 // 2. 创建web服务器
5 const app = express();
6
7 // 根据路由(路径)处理get和post请求
8 app.get('/', (req, res)=>{
9 res.writeHead(200, {'Content-Type': 'text/html'});
10 res.write('<h2>H
LeetCode -- Largest Perimeter Triangle
题意及思路 给定一组A正长度,返回具有非零区域的三角形的最大周长,由这些长度中的3个形成。 如果不可能形成任何非零区域的三角形,则返回0。 思路:将数组A进行升序排序,从长度最长的位置(数组末尾)开始,每三条边,看看能否构成三角形,如果能构成三角形,则此三边即为最大三角形周长,否则每次递减一位,直到找到或找不到。 代码 class Solution {
public int largestPerimeter(int[] A) {
//define, init
Leetcode第144场周赛总结
5117.IP地址无效化 首先计算出输入IP地址的长度,然后遍历每一个字符。 如果当前字符为'.',就在它的前后两侧分别加上'['和']'字符。 值得一提的是,C++的String类型提供了以上操作的函数,我们可以直接调用内部函数,使得我们的程序更加简洁,更加清晰明了。 下面给出AC代码: class Solution {
public:
string defangIPaddr(string address) {
int len = address.size();//直
java面向对象1-面向对象概念
面向对象概念-类与对象的关系 封装:指隐藏对象的属性和实现细节,仅对外提供公共访问方式,private-构造方法/构造器-this关键字-static关键字(javadoc制作工具类) -代码块 继承:方法重写-super-子类实例化过程-final-抽象类-接口 多态: 1.1 面向对象概念Object-Oriented 1.1.1 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向对象是基于面向过程的 1.1.2 面向对象的特点 可以将复杂的事情简单化 将程序员
今日推荐
周排行