Gmail Api 的解读及例子

基于Google Workspace API构建企业级AI Agent:从协议理解到工程实践 在实际企业级应用开发中,AI Agent 正从简单的聊天机器人演变为能够理解业务、执行复杂任务、甚至跨系统协作的“数字员工”。然而,一个核心挑战在于:如何让 AI Agent 真正“理解”一个公司的内部运作、数据结构和业务流程?传统的做法需要投入大量人力进行数据清洗、API 对接和规则编写,过程繁琐且难以维护。近期,围绕 Google 新协议和其 AI 产品 Gemini Spark 的讨论,为我们提供了一种新的思路——通过标准化的协议和深度集成的平台能力,让 AI Agent 能够更自然地接入企业环境,实 阅读详情
  由于公司需求需要获取Gmail的信息,于是下了Google提供的例子并开始研究GoogleApi的调用,在这个过程中遇到了几个坑同时也学习到了一些知识,现记录如下:
      一 Android QuickStart
        google 给出了一个对于Andriod 的快速开始的例子,没有现成的源码,但是文章比较详细的介绍了要想在Android上使用gmailApi,需要做的步骤。像任何第三方提供接口一样,你需要相关授权并在其网站上建立该应用(博主也使用过新浪提供的api ,那个坑真是泪泪的。。)。
        step1 中需要Android 的sha1 的签名证书,keytool是jdk的工具,要将其路径加入环境变量中,对我坑的是,文档上 debug.keystore 的地址,由于我的jdk 是安装再d盘的,所以 文档上的 ~ 代表的是D盘,而debug.keystore 是存在在你C 盘下的,所以各种找不到,最后突然顿悟Linux下的命令的相对地址,才发现了这个坑,得到了sha1的签名证书。
         
Linux路径,对相对路径要敏感!
         
        接下来按照步骤来进行,顺利在AS上建立了工程,不过下载相关的依赖也是费了好大劲,结果jar 包下下来之后,开始run,出现错误:
        com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.8.0_45\bin\java.exe'' finished with non-zero exit value 2

        上网各种找解决方法,http://stackoverflow.com/questions/30001051/appdexdebug-execexception-finished-with-non-zero-exit-value-2   stackoverflow上的这个解释地很好。就是jar 包的问题。
      用网上的方法去逐个删除jar 包排除这种重复,但是最恐怖的事情发生了,当删除一个jar包的时候重复错误没有了,但是同时代码里的不识别也出来了,这说明一个jar包里面的是一半需要一半不需要! 仔细的比对了文档提供的build.gradle 文件,想到在建立 build.gradle 文件的时候,直接生成的默认的 compileSdkVersion和 targetSdkVersion  等 是 23 ,而例子提供的是22,导致下面 dependencies中 compile 的 包名里面  appcompat-v7:23.0.0 ,和文档给出的不符合,然后添加dependencies 中的其他 依赖,一般都用高版本的,所以想可能是这个原因,将所有数字改成和文档提供的一样,然后,然后。。。就build成功了。。。。
      
 版本的问题有时候很重要,这是对所有开发的坑,特别是jar包,sdk的版本等,时刻拥抱变化。。。

     二 具体API
     quickstart 只是给出了获得当前gmail账户所有标签的例子,谁想要标签啊,当然都是要未读邮件的数目啦,开始理解Gmail的数据结构,下面进行简单的介绍,并不详尽,因为没有太多时间去一一理解:
     Gmail提供了三种数据结构:Threads,Messages,Labels。Threads 在我理解是会话的一次,是指你和另外的一个账户进行会话的过程,而每一个Threads 是可以有多个Messages的,所以Messages就很好理解,就是指一条信息,通过查看它的属性和操作,你可以知道当获得了这个对象之后你可以获得的相关信息和进行的操作;而labels就是你邮箱中定义的标签,从给出的quicstart也可以看出,最后打印出来的有INBOX,SPAM,SENT等各种类型,可以从这个链接上查看https://developers.google.com/gmail/api/guides/labels,更开心的是,看到了User.lables是具有messagesTotal,messagesUnread,threadsTotal,threadsUnread 的属性,那么获得你想要的标签下的对象,然后输出这个属性不就好了,我们想要未读邮箱的数目,那么就是INBOX里面的threadsUnread的属性嘛,很开心的在QuickStart 的程序中对获得的lables进行遍历, 搜集INBOX标签的对象,结果打印的结果是null,试了各种标签的数目都是null,百思不得其解,这个时候一定要再去看google文档,又耐心的找了一遍,发现在具体的介绍操作(get,list,modify,delete等)的页面上有代码段子,并且提供了页面操作,然后发现了获取label的方法有猫腻,QuickStart上仅仅是mActivity.mService.users().labels.list(user).execute(),  只是获得了label的list,而实际上是这样子的:
MActivity.mService.users().labels.get(user,"INBOX").execute() ,这样获得的label对象才能够获得到threadsUnread的数值,果然还是做得看得少了。
       同时还要注意的是,对Gmail邮箱不同类型的操作是需要不同的权限的,只是获得labellist,权限少,但是要获得数目或者是要对具体信息更改创建的时候需要更多的权限,以QuickStart为例,其权限设置在SCOPES一个字符串数组里,你可以向其中添加GmailScopes.GMAIL_LABELS,GmailScope.MAIL_GOOGLE_COM等权限。
   
      三 Android知识  
        在复制QuickStart代码的过程中,学习了一下google技术人员的写法,可能只有两个文件,不能显示出google技术人员的水平,一个mainactivity ,动态写的布局,没有用layout的xml文件,使用了AsynTask来做异步操作,但是惊奇的是在doInbackgroud中进行了UI的操作,但是人家这个UI操作是封装在acitivty中runOnUIThread里面的,看得我也是愣神一愣神的,想必自己经历的还是太少,对于runOnUIThread这个函数,网上有其和handler的使用场景比较,但实际上runOnUiThread的源码即使用了handler 的callbacks 进行完成的,只不过用runOnUithread应该代码量更少而已,所以可能到底用哪个全看喜好了,但关键还是要理解其内部的原理,才能随心所欲。

       记录动态生成布局的例子,有利于理解Android的View其绘制原理:

        LinearLayout activityLayout = new LinearLayout(this);
       
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
               
LinearLayout.LayoutParams.MATCH_PARENT,
               
LinearLayout.LayoutParams.MATCH_PARENT);
        activityLayout
.setLayoutParams(lp);
        activityLayout
.setOrientation(LinearLayout.VERTICAL);
        activityLayout
.setPadding(16, 16, 16, 16);

       
ViewGroup.LayoutParams tlp = new ViewGroup.LayoutParams(
               
ViewGroup.LayoutParams.WRAP_CONTENT,
               
ViewGroup.LayoutParams.WRAP_CONTENT);

        mOutputText
= new TextView(this);
        mOutputText
.setLayoutParams(tlp);
        mOutputText
.setPadding(16, 16, 16, 16);
        mOutputText
.setVerticalScrollBarEnabled(true);
        mOutputText
.setMovementMethod(new ScrollingMovementMethod());
        activityLayout
.addView(mOutputText);

下面给出了自己写的quickstart的源代码,是成型的工程,输出结果为全部邮箱数目和未读邮箱数目,同时加入了一分钟刷新页面的机制<使用的是handler>
PS: Gmal Api部分还有推送部分,还没有时间详细的去了解,想必这个推送对一些app有价值,可以后续有时间了再研究。
下载链接:http://download.youkuaiyun.com/detail/elfxwt/9178015
github地址:    https://github.com/elfxwt/GmailQuickStart/tree/master   

Android平台Gmail邮件处理实战指南 本文还有配套的精品资源,点击获取 简介:在Android平台上实现Gmail邮件的发送和接收是一个常见的需求,尤其是在处理带附件的邮件时,这要求开发者深入理解Android的Mail API和Gmail服务。本文将详细介绍从构建邮件开始,到附件处理、使用Gmail API发送和接收邮件的全过程。包含邮件对象创建、属性设置、附件添加、SMTP/IMAP服务器连接以及邮件内容解... 阅读详情

相关推荐

GmailApi-Android:该项目正在通过gmail发送邮件

GmailApi-Android 该项目正在通过gmail发送邮件。 通过Gmail发送电子邮件很容易。 它在Java中用作JMAPI。 在gmail和密码中输入您的accont。 并发送到电子邮件ID。 插入您的主题和消息。

Android下使用googleapi-client-java操作google calendar

刷机又把数据刷没了,网络时代,数据还是和服务器同步好了。 从 http://code.google.com/p/google-api-java-client 下载了库和sample,因为此库还在更新中,文档不是很全,自己摸索了一遍,总结在下面。 访问google服务的流程: 1.使用用户名、密码获取授权字符串。 2.使用授权字符串以及其他的参数发送http请求。 3.解...

小苏博客--关注软件开发 519

GmailAPI:使用Gmail API发送电子邮件

GmailAPI 使用Gmail API发送电子邮件 该存储库演示了如何使用Google的Gmail API 重要通知 GoogleNetHttpTransport.newTrustedTransport()不能按文档使用,而是使用AndroidHttp.newCompatibleTransport()来避免常规安全性异常。 事先需要做以下事情: 客户编号和客户机密 访问令牌 刷新令牌 在职的 在此仓库Async类中, SendMailNew负责与Gmail API相关的所有事情。 首先,新的Google凭据是使用authorize() 。 然后,使用createGmail()创建服务(Gmail)之后。 然后,使用createEmail()创建MimeMessage(Mail),并使用createMessageWithEmail()进行编码。 附加信息 您可以找到有关客户端ID,客

初识GmailAPI(PHP)

Occasionally, I want to get the latest emails from Gmail in time, but if there is no suitable environment for the captain, this will be difficult. After all, Google is still somewhat difficult on the ...

攒一口袋比卡丘的博客 1542

C51编程25-应用篇(单片机与电脑端实现wifi通讯)

单片机使用ESP-01S wifi模块与电脑端进行数据通讯。

qq_34343637的博客 1万+

【论文阅读1】机理引导的残差学习用于电池全生命周期状态监测 | Nature Communications

本文提出了一种机理引导的残差学习框架,用于提升电池全生命周期内荷电状态(SOC)和健康状态(SOH)的监测精度。该方法融合等效电路模型的先验知识与机器学习,设计了修正模型和补偿模型两种通用框架。实验验证表明,该方法在三种不同类型电池数据集上均表现出色,SOC和SOH估计误差较传统方法降低50%以上,且在未见工况下仍保持良好外推能力。模型具有强鲁棒性,在减少训练数据量和降低采样频率时性能稳定,并兼具物理可解释性。该框架无需离线测试和运行中校准,为电池安全监测提供了有效解决方案。

qq_21843433的博客 615

Android Gmail 邮件签名客制化需求

需求描述: When SKUI ID is 600TEL or 600CLA, When sending an email, it must be configure the signature: Telcel: “Enviado desde mi <Name of Brand> de Telcel.” Claro: “Enviado desde mi <Name of ...

IceSea7 2882

冷源法测试噪声系数(Noise Figure)详细步骤

背景知识 电阻负载的功率谱密度 噪声等效模型 3 4 冷源法测试步骤 注意事项

eleday的电子世界 6871

Android Gmail签名客制化

最近几天做海外项目,需要定制email的签名,比如send by xx;也就是预制厂商的签名,由于用的是gms 里面的gmail.apk 没有源码,只要apk文件,这个问题困扰了两天,想办法也要搞定。因此需要反编译gmail .apk 当时第一种思路就是 运行时资源替换,发现只能替换string里面的资源,替换其他的会出现crash,因此第一种是行不通的 ,第二种方法就是网数据库里面改值,由于...

linliang的博客 2271

评分卡建模学习(一)————数据预处理part.3

目录六、数据处理的思路及代码(一)对缺失值的处理:在我这个数据预处理的part.1板块(二)对异常值的处理:在我这个数据预处理的part.2板块(三)数据归一化、标准化:在我这个数据预处理的part.2板块(四)非结构化数据转变+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++———————————————————————————————————————————++++++++++++++++++++++++++

Morven_dai的博客 898

Windows 10/11 安装 HYSPLIT 气象模型全攻略(附必备工具包下载清单)

本文提供了一份详尽的Windows 10/11系统下HYSPLIT气象模型安装与配置全攻略。指南涵盖了从核心认知、必备工具包(Tcl/Tk、ImageMagick)下载,到分步安装、环境变量设置及首次运行验证的完整流程,旨在帮助研究者和学生高效部署这一用于大气轨迹模拟与污染物扩散分析的专业工具。

weixin_28335283的博客 610

Airbyte source-gmail 增量同步设计解析:Gmail API 时间过滤限制、游标策略与限流退避实现

本篇文章以 [source-gmail 连接器说明文档](https://link.gitcode.com/i/bb0aa2d9be17a133fe211e079f2c121d) 为核心骨架,结合仓库内 [manifest.yaml](https://link.gitcode.com/i/e59b181df8f65b55cd165f507b4eb69f) 声明式源码与 [unit_tests](h

gitblog_00847的博客 288

【RH850/U2A】:HSM与APP通信(中断方式)

HSM与APP通信(中断方式)

1994

用Gmail API+Python构建AI行业趋势监测系统

邮件是AI产业信息的第一触点,具备天然的时间戳、发件人身份和上下文可信度。基于Gmail API的数据采集,结合Python邮件解析与结构化处理,可实现低门槛、高时效的行业动态追踪。其核心原理在于将非结构化商业信函转化为带时间序列的结构化事件流,通过关键词匹配、域名聚类与趋势热力图生成,支撑技术选型判断、竞品动向预判和研究数据获取。该方案规避了RSS滞后、爬虫不稳定、NLP向量化噪声大等常见问题,特别适合需一手信源的产品经理、创业者与高校研究者。关键技术落地围绕Gmail API授权、MIME正文解析、增量

cuibinmo3519的博客 380

YOLOv11改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 779

Android 编译系统(Build System)剖析

make是一种自动化构建工具,通过读取Makefile将源代码自动编译为可执行程序和库文件。

虎哥LoveDroid 2169

IronClaw Gmail 扩展实战指南:让 Agent 安全地读写、发送与管理你的邮箱

本篇指南以 IronClaw 官方 [Gmail 扩展文档](https://link.gitcode.com/i/8750764960ca4e851d489af101afa6b8) 为核心骨架,讲解如何为你的 Agent 接入 Gmail:从 Google OAuth 授权、`ironclaw extension` 命令行安装激活,到 `list_messages`、`get_message`、

gitblog_00139的博客 154

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

MBomb源码逐行解读:无限群发核心循环是如何实现的

**MBomb(Gmail To Gmail)Mail Bombing** 是一款开源的邮箱轰炸工具,其核心功能是通过 Gmail 的 SMTP 服务实现"无限群发"——用同一个 Gmail 账号向目标邮箱连续发送指定数量的邮件。这篇文章带你**逐行解读 MBomb 源码**,看懂它的无限群发核心循环到底是怎么实现的,包括一个隐藏的混淆外壳和几个新手容易忽略的细节。 ## 📂 项目结构一览:4

gitblog_00510的博客 1107

深度学习工具包 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")

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Gmail智能功能与Gemini模型数据关联分析及隐私管控方案

云端AI服务通过机器学习模型处理用户数据以提升产品体验,其核心原理涉及数据收集、模型训练与反馈优化。在邮件应用场景中,智能回复、语法建议等功能常依赖用户内容进行模型微调,这带来了显著的隐私泄露与合规风险。理解数据流机制、用户控制选项及本地化替代方案,对于平衡AI便利性与数据安全至关重要。本文聚焦Gmail智能功能与Gemini模型的潜在数据关联,提供从设置检查、条款解读到本地AI部署的完整验证路径,帮助开发者和隐私敏感用户构建可控的数据处理流程。

weixin_30915951的博客 357

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Gmail Creator Pro 实战指南:反检测批量注册、5sim 验证绕过与配置详解(gmail-account-creator 仓库)

本文以 gmail-account-creator 仓库的 [README.md](https://link.gitcode.com/i/68159ce8af94f45df169b9f86bf99ee2) 为核心,系统讲解 Gmail Creator Pro 这一自动化 Gmail 批量注册工具的完整使用链路:从运行环境与依赖安装、四类配置文件(密码、姓名、5sim、用户代理)的逐项设置,到反检测

gitblog_00844的博客 181

google-api-nodejs-client 接入 Gmail Postmaster Tools:用 Node.js 获取邮件流量与送达指标实战指南

本指南围绕 `google-api-nodejs-client` 仓库中 Gmail Postmaster Tools 客户端(`@googleapis/gmailpostmastertools`)展开,介绍如何通过 Postmaster Tools API 以编程方式获取原本只能在 Gmail Postmaster Tools 网页端看到的邮件流量指标(垃圾邮件报告、投递错误、SPF/DKIM/

gitblog_02961的博客 378

STranslate 翻译OCR工具:划词翻译、截图识别与历史导出免费用

遇到外文内容时,截图、划词、翻网页总显得繁琐。STranslate 是一款 WPF 开发的开源翻译与 OCR 工具,免安装、解压即用,覆盖划词翻译、截图文字识别、TTS 朗读和历史导出。如果你经常处理外文资料,它能接住日常多数场景。 ## 能力速览:翻译与OCR功能一览 | 能力 | 能做什么 | | --- | --- | | 划词翻译 | 在任意应用选中文字,双击 Ctrl+C 或按热键,

gitblog_00617的博客 347

邮件管理实战:从Gmail/Outlook配置到Inbox Zero与AI助手的完整闭环

邮件管理是职场人日常高频面对的基础事务,其本质并非工具选择问题,而是一套决策流程的设计。理解收件箱的运作原理,掌握Gmail的标签过滤与Outlook的规则自动化,是构建高效邮件处理系统的技术基石。Inbox Zero方法论提供从理念到落地的执行框架,强调首次处理邮件时即完成判断,减少重复阅读带来的认知负担。AI邮件助手在摘要、起草和优先级排序上具备提效价值,但最终决策仍需人工把控。本文结合邮件客户端配置实践,系统性梳理邮件堆积的根因,给出可持续的收件箱清零方案,帮助个人与团队将邮件从注意力黑洞转化为有序的

优快云头条 427

【python实用小脚本-332】[HR揭秘]手工党疯狂下载附件的终结者|Python版Gmail批量附件下载加速器(建议收藏)

本文以HR转型Python编程的视角,深度解析Gmail批量附件下载脚本的实战价值。通过招聘场景痛点引入,结合50行核心代码逐行注释,揭示ezgmail库在办公自动化中的"简历筛选式"智能应用。文章独创"HR三棱镜"技术解读法,将异常处理比作员工风险预案,邮件搜索比作人才画像系统,并附资源消耗饼图可视化分析。最后提供财务发票管理、法务合同审查、自媒体素材归档三大跨界改造方案,强调该脚本年省438小时、零误差的核心优势,适合Python初学者及追求效率的职场人快速上手,实现从"鼠标点击工"到"流程设计师"的认

kylner的博客 934

Memcached 和 Gmail API 的问题与解决方案

如何使用 Memcached 缓存 Gmail API 的 HTTP 请求?一名开发者在尝试使用 Django 应用与 Gmail API 交互时遇到了一个问题,他希望在 HTTPlib2 层对请求进行缓存,但遇到了一个问题: 尽管调用成功,并且 Python 能够连接到 Memcached,但似乎在 Memcached 中从未找到键(如果正确解读了 Memcached 输出的话)。

D0126_的博客 512

himalaya 的 Microsoft Graph 专属命令实测报告:`msgraph` 原始 API 全命令覆盖与关键修复解读

> 本文以 [msgraph-specific.md](https://link.gitcode.com/i/82e5d086df97ffdd87401b3aaf83e646) 测试报告为核心展开,结合 [himalaya](https://link.gitcode.com/i/d2f4b3f5c8ae09ed94264d1c5e29a25c) 仓库 `src/msgraph/` 下的源码实现,系

gitblog_00975的博客 352
上一篇: Android View 的事件处理和分发原理简析
下一篇: Android Wear 交互表面设计及Android 双击事件监测实现
Sophia_Xwt
博客等级 码龄17年 38粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值