php -S localhost:8080 -t public
指定当前public目录位对外目录
php -S localhost:8080 -t public
指定当前public目录位对外目录
(13条消息) VLC源码分析知识总结_c_m_deng的博客-CSDN博客
(13条消息) vlc源码分析–issue (未完待续)_王二の黄金时代的博客-CSDN博客
VLM
VLM: VideoLAN (Media) Manager
VLM is a little media manager originally designed to launch multiple
streams with only one VLC.
example
/// This file is included in libVLC main page in the doxygen documentation.
//! [minimal example]
#include <stdio.h>
#include <stdlib.h>
#include <inttypes.h>
#include <unistd.h>
#include <vlc/vlc.h>
int main(int argc, char* argv[])
{
libvlc_instance_t * inst;
libvlc_media_player_t *mp;
libvlc_media_t *m;
/* Load the VLC engine */
inst = libvlc_new (0, NULL);//创建lbvlc 实例对象
/* Create a new item */
m = libvlc_media_new_location("http://mycool.movie.com/test.mov");
//创建vlc播放媒体对象
//m = libvlc_media_new_path("/path/to/test.mov");
/* Create a media player playing environement */
mp = libvlc_media_player_new_from_media (inst, m);
//创建vlc播放器对象
/* No need to keep the media now */
libvlc_media_release (m);
/* play the media_player */
libvlc_media_player_play (mp);
//执行播放器播放
while (libvlc_media_player_is_playing(mp))
{
//循环读取播放状态
sleep (1);
int64_t milliseconds = libvlc_media_player_get_time(mp);
int64_t seconds = milliseconds / 1000;
int64_t minutes = seconds / 60;
milliseconds -= seconds * 1000;
seconds -= minutes * 60;
printf("Current time: %" PRId64 ":%" PRId64 ":%" PRId64 "\n",
minutes, seconds, milliseconds);
}
/* Stop playing */
libvlc_media_player_stop_async (mp);
/* Free the media_player */
libvlc_media_player_release (mp);
libvlc_release (inst);
return 0;
}
//! [minimal example]
源码解析
后缀
.c 源文件
.s 汇编文件 gcc -S main.c 生成汇编文件
.o 目标文件 编译后的二进制文件
.h 头文件 生命模块的对外接口
.a 静态连接库
.so 动态连接库
无 ELF文件 可执行文件
生成可执行文件流程
.c 添加 .h 文件作为外部模块接口声明来调用
编译生成目标文件 gcc -c xxx.c 生成 xxx.o
连接目标文件 生成可执行文件 ld xxx.o xxx1.x -o xxx
运行可执行文件 ./xxx
静态库生成及连接过程
编译生成目标文件 gcc -c static_lib.c 生成 static_lib.o
打包目标文件位静态文件库 ar rcs static_lib.a static_lib.o static_lib1.o static_lib2.o 将多个目标文件 打包为 static_lib.a
使用静态库 gcc xxx.c -lstatic_lib.a -o app -l 参数指定静态库
动态库生成及连接过程
编译源码生成动态库 gcc -shared -fPIC -o shared_lib.so share_lib.c
使用动态库编译可执行文件 gcc main.c ./shared_lib.so -o app
class OctopusRecord extends Model
{
use SoftDeletes;
use HasFactory;
protected $connection = "beiko_mysql";
protected $table = 'octopus_records';
//所有字段一定要满足 小写下划线模式
public function triage_tags()
{
return $this->hasMany(OctopusRecordTriageTag::class,"octopus_record_id");
}
}
$form->tab("分诊信息",function (Form $subform) {
$subform->hasMany('triage_tags', "分诊标签", function (Form\NestedForm $nestedForm) {
$nestedForm->hidden('id');
$nestedForm->select('name', "标签")->options(TriageTag::all()->pluck('name', 'name'));
//$nestedForm->text('name', "标签");
});
//->distinctFields(["name"]);
//->useTable();
//->useTab();;
//$form->multipleSelect('triage_tags', "分诊标签")->options([0=>"无效",1=>"有效"]);
//->options(TriageTag::all()->pluck('name', 'name'));
$subform->textarea('conclusion', __('Conclusion'));
});
use Illuminate\Support\Facades\Log;
Log::info("triageTeam" . json_encode($triageTeam));
Log::info("schools" . json_encode($triageTeam->schools()));
强制使用dd($variable)能在页面打印变量 很好用
linux下 make file example
CC=gcc
all: helloworld.o
$(CC) helloworld.o -o helloworld
helloworld.o:
$(CC) -c helloworld.c -o helloworld.o
clean:
rm helloworld helloworld.o
execute:
./helloworld
linux 下交叉编译 windows 64 位应用
CC=x86_64-w64-mingw32-gcc
all: helloworld.o
$(CC) helloworld.o -o helloworld.exe
helloworld.o:
$(CC) -c helloworld.c -o helloworld.o
clean:
rm helloworld.exe helloworld.o
execute:
wine ./helloworld.exe
vlc 是一个开源播放器 能播放市面上大部分音视频
vlc 源码地址
vlc编译指导(交叉编译为windows 64 dll)
doc/BUILD-win32.md · master · VideoLAN / VLC · GitLab
血的教训(因为交叉编译 对环境 依赖很高 主要是版本问题 导致本地环境很难编译过)
vlc团队有docker环境 安装(安装了所有依赖项 拉下源码即可编译)
https://code.videolan.org/videolan/vlc/-/blob/master/extras/ci/gitlab-ci.yml
文档中有docker地址
variables:
VLC_WIN32_IMAGE: registry.videolan.org/vlc-debian-win32:20221214121630
VLC_WIN64_IMAGE: registry.videolan.org/vlc-debian-win64:20221214115142
VLC_WIN_LLVM_MSVCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-msvcrt:20221214101739
VLC_WIN_LLVM_UCRT_IMAGE: registry.videolan.org/vlc-debian-llvm-ucrt:20221214110439
VLC_DEBIAN_IMAGE: registry.videolan.org/vlc-debian-unstable:20221213103803
VLC_ANDROID_IMAGE: registry.videolan.org/vlc-debian-android:20221214124003
VLC_SNAP_IMAGE: registry.videolan.org/vlc-ubuntu-focal:20221023195550
VLC_RASPBIAN_IMAGE: registry.videolan.org/vlc-ubuntu-raspberry:20221023200157
VLC_WASM_EMSCRIPTEN: registry.videolan.org/vlc-debian-wasm-emscripten:20221213104631
不同的编译版本下载对应的docker镜像(镜像稍大需要耐性)
docker pull registry.videolan.org/vlc-debian-win64:20221011230137
本地运行
git bash
winpty docker run -v /c/Users/15699/vlcdirectory/:\vlc -u 0 -it –privileged=true registry.videolan.org/vlc-debian-win64:20221214115142 bash
CMD
docker run -v c://Users/15699/vlcdirectory/:/vlc -u 0 -it registry.videolan.org/vlc-debian-win64:20221214115142 bash
然后拉取源码 运行编译(当然源码中需要下载很多第三方包)最好先下载下来 然后 在makefile指定本地文件
mkdir build cd build ../vlc/extras/package/win32/build.sh -a x86_64
CREATE USER 'test1'@'localhost' IDENTIFIED BY 'test1'; CREATE USER "用户"@"host" IDENTIFIED BY "密码" 当不限定host名字 用通配符 % 授权(记得执行 flush priviledges) GRANT priv_type ON database.table TO Name@Host grant all on *.* to 'test1'@'%'; grant select,insert,update,delete,create,drop on vtdc.employee to joe@10.163.225.87 identified by ‘123′;
SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER
一般都是限定某个用户在某个库的全部角色
DWR 全称 direct web remote
可将java的一个对象当成js一个对象执行方法返回结果
可以理解为js域通向java服务端的一种RPC(远程方法调用)
技术执行流 为 js-> js 对象执行方法-> post 异步请求->DWRServlet->java 对象
中间post 异步请求与 DWRServlet 均被封装屏蔽
用户只需要调用DWRServlet 动态生成的js脚本里面生成的js对象的方法 就可以发起通讯
同时具有BLE 和 旧蓝牙功能
AT+NAME=?
OK+NAME=ORTHOCONE_S011
AT+NAME=XXXX
OKsetNAME
AT+BNAME=?
OK+BNAME=L_ORTHOCONE_S011
AT+BNAME=XXXX
receive:OKsetBNAME
AT+PIN=?
OK+PIN=1234
AT+PIN=1234
OKsetPIN
AT+VERSION
www.hc01.com V2.5, 2022-04-26