UC故事 2011/11/24

因果推断综述-A Survey on Causal Inference 最近读到一篇讲述很全面的综述文献-《A Survey on Causal Inference》,对于接触因果推断不久的同学而言是特别详细的介绍和科普。文献很长,我会分成几部分介绍。 目录 摘要 第一部分:简介 第二部分:因果推断基础知识 第三部分:基于三种假设的因果推断方法 第四部分:实验 第五部分:应用 摘要 几十年来,因果推理是一个跨许多领域的关键研究主题,如统计、计算机科学、教育、公共政策和经济学。与随机对照试验相比,研究方向由于可用数据量大且预算要求低,如今,从观测数据.. 阅读详情

1. Chat Module接收信息,并演示到UI上面的全过程:

STACK TRACE:

CChatMainDlg::ReceiveMessage(unsigned long 19923456, WTL::CString & {...}, WTL::CString & {...}, int 1, _charformatw * 0x00119fa8) line 589
CChatMainDlg::ReceiveData(const CInfoSID & {...}, unsigned long 54, unsigned char * const 0x01f65db8) line 545
CChatSession::OnReceiveData(const CInfoSID & {...}, const CInfoSID & {...}, DATA_Priority DATA_PRIORITY_HIGH, unsigned long 2, unsigned long 54, unsigned char * const 0x01f65db8) line 634
CConfSession::OnReceiveData(const CInfoSID & {...}, const CInfoSID & {...}, DATA_Priority DATA_PRIORITY_HIGH, unsigned long 2, unsigned long 54, unsigned char * const 0x01f65d31) line 514 + 49 bytes
CConference::HandleSessApplicationData(CInfoSvrSessApplicationData * 0x01f635d0) line 1972 + 96 bytes
CConference::OnReceiveData(CRtMessageBlock & {...}) line 1342
CConfConnection::OnReceiveData(CRtMessageBlock & {...}, IConnection * 0x01efdf5c) line 170
CRtIMConnection::OnReceive(CRtMessageBlock & {...}, IRtTransport * 0x01efbe90, CRtTransportParameter * 0x00000000) line 890 + 50 bytes
CRtEventOnReceive::OnEventFire() line 375 + 50 bytes
CRtEventQueueBase::ProcessOneEvent(IRtEvent * 0x01f121d0) line 229 + 12 bytes
CRtEventQueueBase::ProcessEvents(const std::list<IRtEvent *,std::allocator<IRtEvent *> > & {...}) line 217
CRtReactorBase::ProcessHandleEvent(void * 0xffffffff, long 256, int 0, int 1, int 0) line 324 + 18 bytes
CRtReactorWin32Message::Win32SocketWndProc(HWND__ * 0x00050804, unsigned int 1058, unsigned int 4294967295, long 256) line 115
USER32! 77d18734()
USER32! 77d18816()
USER32! 77d189cd()
USER32! 77d196c7()
WTL::CMessageLoop::Run() line 468 + 15 bytes
Run(char * 0x00141f37, int 1) line 207 + 11 bytes
LaunchConf(HINSTANCE__ * 0x00400000, char * 0x00141f37, int 1) line 318 + 13 bytes
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f37, int 1) line 85 + 20 bytes
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c817077()

Q:Win32SocketWndProc()被调用是谁决定的?所有这些对象的实例化过程?

     A:在CRtReactorWin32Message::Open()中将Win32SocketWndProc注册了。 2011/12/04

Q:网络程序用的message loop与CMainFrame使用的消息循环是同一个吗?

       A:不同,因为在不同的线程中,一个是main (UI) thread,一个是network thread。 2011/12/04

 

2. 杂项

*   How to understand Win32SocketWndProc ?

Reactor模式相关文章:http://woshao.com/article/4ab7b9e8589911e099b5000c2959fd2a/

Windows Socket的WSAAsyncSelect模型


3. CRtReactorWin32Message

* 初始化

STACK TRACE

CRtReactorWin32Message::Open() line 163
CRtThreadReactor::Create(int 0, CRtThreadManager::TFlag TF_JOINABLE) line 40 + 19 bytes
CRtThreadManager::CreateReactorThread(int 0, IRtReactor * 0x01ef81d8, CRtThread * & 0x00000000) line 368 + 41 bytes
CRtThreadManager::InitMainThread(int 0, char * * 0x00000000) line 191 + 24 bytes
CRtThreadManager::Instance() line 132 + 15 bytes
RtCoInitialize() line 179 + 5 bytes
ILDebugStart(unsigned short 33201, void * 0x00000001) line 1482
WinMain(HINSTANCE__ * 0x00400000, HINSTANCE__ * 0x00000000, char * 0x00141f37, int 1) line 83 + 8 bytes
WinMainCRTStartup() line 330 + 54 bytes
KERNEL32! 7c817077()

注:在WinMain()中启动Debug Service(为什么是Debug?名字很怪)时,CRtReactorWin32Message::Open()被呼叫,并在此函数中完成窗口WinSocket 32窗口响应函数的注册。


* CRtReactorWin32Message::Open

RtResult CRtReactorWin32Message::Open()
{
    RtResult rv = RT_ERROR_UNEXPECTED;
    g_pReactorWin3Instance = ::GetModuleHandle(NULL);
    RT_ASSERTE_RETURN(!m_hwndNotify, RT_ERROR_ALREADY_INITIALIZED);

#ifdef RT_ENABLE_CALENDAR_TIMER
    m_CalendarTimer.m_Est.Reset2CurrentThreadId();
#endif // RT_ENABLE_CALENDAR_TIMER

    rv = CRtReactorBase::Open();
    if (RT_FAILED(rv))
        goto fail;

    if (g_atomRegisterClass == 0) {
        WNDCLASS wc;
        wc.style = 0;
        wc.lpfnWndProc = Win32SocketWndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = sizeof(void*);
        wc.hInstance = g_pReactorWin3Instance;
        wc.hIcon = 0;
        wc.hCursor = 0;
        wc.hbrBackground = 0;
        wc.lpszMenuName = NULL;
        wc.lpszClassName = WIN32_SOCKET_CLASS_NAME;
        
        if ((g_atomRegisterClass = ::RegisterClass(&wc)) == 0) {
            RT_ERROR_TRACE_THIS("CRtReactorWin32Message::Open, RegisterClass() failed!"
                " err=" << ::GetLastError());
            rv = RT_ERROR_FAILURE;
            goto fail;
        }

        ......

      m_hwndNotify = ::CreateWindow(WIN32_SOCKET_CLASS_NAME, NULL, WS_OVERLAPPED, 0,
        0, 0, 0, NULL, NULL, g_pReactorWin3Instance, 0);
      if (!m_hwndNotify) {
        RT_ERROR_TRACE_THIS("CRtReactorWin32Message::Open, CreateWindow() failed!"
            " err=" << ::GetLastError());
        rv = RT_ERROR_FAILURE;
        goto fail;
    }
    ......

    ::SetWindowLong(m_hwndNotify, 0, (LONG)this)          

                ^  将当前对象(也就是CRtReactorWin32Message)指针存在Windows数据区中,

                ^ 供Windows Handler函数在处理的时候使用reactor->ProcessHandleEvent来处理。 2011/12/04

 

    ......

    return RT_OK;
    .......
}

Q: created an invisible window ?

     A:YES ! 

注:SetWindowLong(...)将当前Reactor对象存在m_hwndNotify窗口的index为0的特殊存储区域中,在后来的消息响应函数中可以据此找到此Reactor的实例。

 

例入网络上有信息传过来的时候,如下代码:

Win32SocketWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{

 switch(uMsg)
 {
   case WM_WIN32_SOCKET_SELECT:

   ...

   CRtReactorWin32Message *pReactor= (CRtReactorWin32Message *)::GetWindowLong(hwnd, 0);

   pReactor->XXX();

   ......

}


Q: why cannot find Win32SocketWndProc function in the computers at home ?


4. WSAAsyncSelect

::WSAAsyncSelect(sListen, hWnd, WM_SOCKET, FD_ACCEPT|FD_CLOSE);



 

TMS_WebGMaps_1.9.8.0_Full_Source TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder 立即下载

相关推荐

秦时明月6.2魔改版_从零到一部署指南_含安卓客户端配置与GM后台直通

本文详细介绍了秦时明月6.2魔改版的从零到一部署指南,包括环境准备、服务端安装、安卓客户端配置以及GM后台直通等关键步骤。特别针对安卓客户端配置和GM工具使用提供了实用技巧,帮助用户快速搭建并优化游戏服务器,确保稳定运行。

weixin_42522964的博客 315

CMU机器学习系三十年演化史:从理论建模到人类中心的范式跃迁

机器学习(ML)已从计算机科学中的辅助方法,发展为重塑问题定义、系统架构与社会价值的核心范式。其本质是通过数学建模理解‘学习’的认知过程,并在数据生成机制、泛化边界与人机协作约束中持续演进。技术价值不仅体现于准确率或算力效率,更在于可解释性、鲁棒性与跨领域适配能力。典型应用场景涵盖医疗诊断、智能交通、农业感知等高可靠性需求领域,尤其强调模型失败时的归因能力与人工干预接口。CMU机器学习系作为全球首个独立建制的ML学术部门,完整呈现了这一演化逻辑——从PAC学习理论奠基,到系统级工程升维,最终锚定人类中心的价

wyjvip333的专栏 429

sap销售发货的流程_SAP销售订单发货后如何实现发票的自动创建?

问SAP销售订单发货后如何实现发票的自动创建?答业务场景有些快消零售企业,SAP系统单据量大,单据金额少,一般在销售发货后即可确认收入。此时无需人工在系统内操作VF01或者VF04进行开票操作,可将该操作设置成后台作业进行自动批量开票,具体操作如下:1、定义任务:VF06输入完以上信息,点击保存进入以下界面:说明:当前日期的意思是“开票的日期”等于“系统电脑中的当前日期”当前日期+/-...

weixin_42358409的博客 3361

短视频平台-小说推文(UC故事会)推广任务详情

点击我的钱包,再点击立即绑定就跳转到提现账户这个页面,这里可以添加银行卡和支付宝,收益可以提现到银行卡和支付宝,在这里任意选择一个账户完善个人资料提交即可。具体收益查询 点击我的,可提现这里可以看见各平台收益的总和,再点击钱包明细,可以看见每一笔订单的收益。点击我的再点击我的钱包,点击提现,再点击全部提现,再点确认就可以提现到你绑定的账户里面。打开小程序,点击“我的”,点击“我的账号”,再点击“新增账号”进入到账号绑定界面。点击审核通过,这里就能看见通过的关键词,关键词通过就可以去发布作品了。

十二指环的博客 1万+

【教程】安装 iterm2 打造漂亮且高性能的 mac 终端

最近电脑重新安装系统,开发环境和软件都需要重新安装和配置,其中终端工具是必不可少的,正好利用这个机会,介绍一下 macOS 终端神器 iTerm2 的安装和配置,并推荐几款好用的插件和工具。在IT领域中,工具的选择和使用对于开发者和运维人员来说至关重要。而在众多终端模拟器中,ITerm2无疑是一个出色的选择,希望本篇的文章能对你有些帮助,感兴趣的朋友可以登录官网查看官方文档。我是刘大大,持续分享AI相关领域的知识和工具,喜欢点点关注。

刘大大AI的博客 3399

音频DSP开发中的‘隐藏关卡’:那些SigmaStudio未公开的模块计算秘籍

本文深入探讨音频DSP开发中SigmaStudio未公开的模块计算秘籍,重点解析动态范围控制、均衡器参数映射和混响算法优化等核心模块计算公式。通过实际案例揭示如何利用这些非官方技巧提升音频质量与系统性能,为ADI DSP开发者提供宝贵的实战经验。

water的专栏 911

UC故事2011/11/29

1. Reactor * CRtReactorBase::ScheduleTimer RtResult CRtReactorBase:: ScheduleTimer(IRtTimerHandler *aTh, LPVOID aArg,      const CRtTimeValue &aInterval, DWORD aCount) {  m_Est.EnsureSingleThre

printf1998的专栏 556

STK传感器配置全攻略:从光学到雷达的7种视场类型详解(附避坑指南)

本文详细解析了STK软件中传感器的7种视场类型,从基础的Simple Conic、Complex Conic到高级的SAR与EOIR,提供了完整的配置步骤与实战避坑指南。重点阐述了雷达、光学等不同物理设备的建模选择逻辑,并针对常见的“No Access”等报错问题给出了系统性的排查方案,帮助工程师高效完成卫星系统设计与任务分析。

weixin_29232507的博客 228

UC故事2011/11/17

### 搞定UCP4.5-0429开发环境(home) 1. info server * 直接F5 $20111117 18:57:53.828 2264/12320 ERROR: CRtAcceptorTcp::StartListen, bind() failed! addr=192.168.1.100 port=1224 err=10049:在其上下文中,该请求的地址无效。

printf1998的专栏 770

RocketMq面板访问异常 com.alibaba.fastjson.JSONException: not close json text, token : string

rocketmq JSONException: not close json text, token : string 问题解决

qq_21067307的博客 5573

Zephyr RTOS线程间通讯实战:消息队列与信号量的5个经典应用场景

本文深入探讨了Zephyr RTOS中线程间通讯的核心机制,通过消息队列与信号量的组合,详细解析了传感器数据处理流水线、命令分发系统、日志记录、资源池管理以及周期性任务协同调度等5个经典应用场景。这些实战模式为构建高效、稳定且可维护的嵌入式多线程系统提供了清晰的设计蓝图和代码范例。

tomato的博客 94

UC故事2011/11/27 - 1

1. 关于connection的定时器 #define TIME_CONF_CONNECT_TIME                (1000 * 30) 改成 #define TIME_CONF_CONNECT_TIME                (1000 * 5) 试试效果,看5秒的效果是什么。 注:结果没有什么感觉,恢复原值。 2. CRtReactorBase

printf1998的专栏 634

c++篇 cad.arx Win10环境配置vs2019+arx2021多版本配置+vs2022 配置图

msvc v141 v140这个两个好像是编译vs2015 vs2017版本的,必须装,然后v142装最新的,剩下的有些是默认的,还有就是mfc这些恐怕要装,然后是v140v141这两个版本的windows sdk是8.1,需要单独装一下。Windows SDK version 8.1 下载地址。windows sdk是10.0.19041.0。先安装vs2019,如图。

我的博客 781

UC故事 2011/11/15

1. WTL * STL, ATL, WTL STL系标准模板库,主要提供算法、容器(Vector, List)等基础类服务, HP支持,C++类库,已经标准化 ATL:Active Template Lib,微软支持,主要提供对COM对象的开发,但缺少UI方面的支持 WTL:Windows Template Lib,微软支持,基于ATL,提供UI(窗口)支持,并有类似于MFC一样的应用

printf1998的专栏 1623

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

UC故事2011/11/27 - 2

1. 再次研究线程 * 线程种类     typedef int TType;     enum     {         TT_MAIN,         TT_NETWORK,         TT_DNS,                      // Q:for what ?         TT_CURRENT,           // Q:for what?

printf1998的专栏 906

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

39岁宿华卸任:他们都不当CEO了

40岁左右,他们纷纷卸任CEO。 作者 I 周佳丽 报道 I 投资界PEdaily 又一互联网大佬让出CEO之位。 昨晚(10月29日),快手发布公告称,现年39岁的公司联合创始人宿华辞去CEO一职,由联合创始人程一笑接任该职位,此后,宿华将继续担任快手董事长、执行董事、薪酬委员会委员,程一笑则作为首席执行官将负责公司日常运营及业务发展,并向宿华汇报。这是快手上市后最大的一次人事变动。 快手是创投圈过去十年最受瞩目的成长案例之一,宿华正是灵魂人物之一。1982年,宿华出生在湖南湘西永顺土家.

m0_46163918的博客 2755

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

快手即将上市!两80后程序员将进入百亿富豪俱乐部

11月5日,快手正式向港交所递交IPO招股书,很快就会在香港上市,成为短视频第一股,创始人程一笑和宿华两位80后程序员也将踏入百亿富豪俱乐部。4551名快手公司员工认购5.24亿B类股份...

Python之禅的专栏 1129

中文互联网正在被AI污染

AI不但没有解放生产力,反而劣币驱逐良币,让优秀的创作者失去热情,也造成了更为严重的信息茧房。

niefeng1005的博客 370

UC故事 回顾 2012/04/05

1.短期计划(1个月) * 重读所有文档 * 重读所有Blog * conference client/server build for windows/linux *  代码走读     # Session层代码     # GC/Info Server 关键代码     # Android/iOS代码     # Client代码 * 跨平台设计启动   2. 读bl

printf1998的专栏 583

UC 故事 05/13/2011 杂记:代码

1. 问题 Q:TP层的架构文档? Q:所有port的种类?不同种类port之间交换信息的业务实例? Q:Channel使用SID来标志,是不是一种特殊port? Q:Channel只和user有关吗?  virtual RtResult JoinChannel(const CInfoSID& userInfoSID, const CInfoSID& channelID) = 0;

printf1998的专栏 967

UC故事2011/12/01

1. Jiarong的例子 * Chat接收 # STACK TRACE CmdChat::OnReceiveData(const CRtString & {0x014c7e79 "h"}, const CRtString & {0x014c7ee1 "h"}, int 1) line 4 ChatComponent::OnReceiveData(const CInfoSID &

printf1998的专栏 434

UC故事 2011/11/20 - 2

1. server信息如何传递到client应用层? void CConference::OnReceiveData(CRtMessageBlock& data) { CRtAutoPtr decPdu; RtResult ret = CInfoSvrPduBase::DecodePdu(data, decPdu.ParaOut());         .... CInfoSvrPdu

printf1998的专栏 331

UC故事 2011/11/21

### 研究client framework ### 1. Create Conference Q:在Create Conference的时候,会向Server发PDU吗?   ### 研究Chat module ###  1. Chat消息发送过程 * 相关类 CChatMainDlg CChatSession ISessionClient CConference CCo

printf1998的专栏 479

UC故事2011/10/16

1. VC6 Q:快速打开一个类? Q:如何使用message观察工具? Q:查project源文件的目录位置? Q:智能指针? Q:一个类的继承树? 2. Conference Q:我们的私有格式的好处是什么?坏处是什么?(比如,和第三方互操作音视频的时候是不是有比较明显问题) Q:分辨率、帧率、码流? Q:双 屏、轮询、画中画 Q:支持手写板? Q:桌面共享时

printf1998的专栏 391

总结一下关于UC方面的问题 2011/09/11

* 音频数据优先级 音频与其它数据分不同的Connection在传输,无论其是否使用UDP,都不可能控制其相对于其它数据的优先级 目前要保障音频优先级的唯一方法是在网络设备层保障 * 纯HTML5方案中server端的变化 需要自己开发WebSocket服务器 需要的时候,仍可做成分级分布式集群 * 服务器的接口 Q:可能做出一个服务器接口让第三方调用否? A:

printf1998的专栏 3171

读书与UC

1.读书Windows Programming V2 Q:AFX_MODULE_THREAD_STATE对于模块和线程都是私有的,如何理解? Q:windows book P176:AfxCallWndProc()如何处理多个消息处理嵌套的? Q:以下代码 /////////////////////////////////////////////// // CMyApp成员函数的实现代码

printf1998的专栏 1828
上一篇: UC股市2011/11/23
下一篇: UC故事2011/11/25
printf1998
博客等级 码龄16年 14粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值