首页 文章 精选 留言 我的

精选列表

搜索[桌面应用程序],共10000篇文章
优秀的个人博客,低调大师

使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发

MaxCompute Lightning是MaxCompute产品的交互式查询服务,支持以PostgreSQL协议及语法连接访问Maxcompute项目,让您使用熟悉的工具以标准 SQL查询分析MaxCompute项目中的数据,快速获取查询结果。很多开发者希望利用Lightning的特性来开发数据应用,本文将结合示例来介绍Java和Python如何连接访问Lightning进行应用开发(参考时需要替换为您项目所在region的Endpoint及用户认证信息)。一、Java使用JDBC访问Lightning示例如下: import java.sql.*; public class Main { private static Connection connection; public static void mai

优秀的个人博客,低调大师

Android应用程序进程启动过程的源代码分析(3)

Step 10.AppRuntime.onZygoteInit 这个函数定义在frameworks/base/cmds/app_process/app_main.cpp文件中: [cpp] view plain copy classAppRuntime:publicAndroidRuntime { ...... virtualvoidonZygoteInit() { sp<ProcessState>proc=ProcessState::self(); if(proc->supportsProcesses()){ LOGV("Appprocess:startingthreadpool.\n"); proc->startThreadPool(); } } ...... }; 这里它就是调用ProcessState::startThreadPool启动线程池了,这个线程池中的线程就是用来和Binder驱动程序进行交互的了。 Step 11.ProcessState.startThreadPool 这个函数定义在frameworks/base/libs/binder/ProcessState.cpp文件中: [cpp] view plain copy voidProcessState::startThreadPool() { AutoMutex_l(mLock); if(!mThreadPoolStarted){ mThreadPoolStarted=true; spawnPooledThread(true); } } ProcessState类是Binder进程间通信机制的一个基础组件,它的作用可以参考 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路 、 Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析 和 Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析 这三篇文章。这里它调用spawnPooledThread函数进一步处理。 Step 12.ProcessState.spawnPooledThread 这个函数定义在frameworks/base/libs/binder/ProcessState.cpp文件中: [cpp] view plain copy voidProcessState::spawnPooledThread(boolisMain) { if(mThreadPoolStarted){ int32_ts=android_atomic_add(1,&mThreadPoolSeq); charbuf[32]; sprintf(buf,"BinderThread#%d",s); LOGV("Spawningnewpooledthread,name=%s\n",buf); sp<Thread>t=newPoolThread(isMain); t->run(buf); } } 这里它会创建一个PoolThread线程类,然后执行它的run函数,最终就会执行PoolThread类的threadLoop函数了。 Step 13.PoolThread.threadLoop 这个函数定义在frameworks/base/libs/binder/ProcessState.cpp文件中: [cpp] view plain copy classPoolThread:publicThread { public: PoolThread(boolisMain) :mIsMain(isMain) { } protected: virtualboolthreadLoop() { IPCThreadState::self()->joinThreadPool(mIsMain); returnfalse; } constboolmIsMain; }; 这里它执行了IPCThreadState::joinThreadPool函数进一步处理。IPCThreadState也是Binder进程间通信机制的一个基础组件,它的作用可以参考 浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路 、 Android系统进程间通信(IPC)机制Binder中的Server启动过程源代码分析 和 Android系统进程间通信(IPC)机制Binder中的Client获得Server远程接口过程源代码分析 这三篇文章。 Step 14.IPCThreadState.joinThreadPool 这个函数定义在frameworks/base/libs/binder/IPCThreadState.cpp文件中: [cpp] view plain copy voidIPCThreadState::joinThreadPool(boolisMain) { ...... mOut.writeInt32(isMain?BC_ENTER_LOOPER:BC_REGISTER_LOOPER); ...... status_tresult; do{ int32_tcmd; ...... //nowgetthenextcommandtobeprocessed,waitingifnecessary result=talkWithDriver(); if(result>=NO_ERROR){ size_tIN=mIn.dataAvail(); if(IN<sizeof(int32_t))continue; cmd=mIn.readInt32(); ...... result=executeCommand(cmd); } ...... }while(result!=-ECONNREFUSED&&result!=-EBADF); ...... mOut.writeInt32(BC_EXIT_LOOPER); talkWithDriver(false); } 这个函数首先告诉Binder驱动程序,这条线程要进入循环了: [cpp] view plain copy mOut.writeInt32(isMain?BC_ENTER_LOOPER:BC_REGISTER_LOOPER); 然后在中间的while循环中通过talkWithDriver不断与Binder驱动程序进行交互,以便获得Client端的进程间调用: [cpp] view plain copy result=talkWithDriver(); 获得了Client端的进程间调用后,就调用excuteCommand函数来处理这个请求: [cpp] view plain copy result=executeCommand(cmd); 最后,线程退出时,也会告诉Binder驱动程序,它退出了,这样Binder驱动程序就不会再在Client端的进程间调用分发给它了: [cpp] view plain copy mOut.writeInt32(BC_EXIT_LOOPER); talkWithDriver(false); 我们再来看看talkWithDriver函数的实现。 本文转自 Luoshengyang 51CTO博客,原文链接:http://blog.51cto.com/shyluo/966508,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

用户登录
用户注册