自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

西涛offbye-移动全栈技术博客

关于移动端架构和全栈开发,Android, HTML5,Swift,前端,人工智能,技术管理等

  • 博客(587)
  • 资源 (8)
  • 问答 (1)
  • 收藏
  • 关注

原创 API网关那些事【架构新知系列】

目前随着云原生ServiceMesh和微服务架构的不断演进,网关领域新产品不断出现,各种网关使用的技术,功能和应用领域也不断扩展,在各有所长的前提下也有很多功能重合,网上各种技术PR文章,评测资料和网关落地实践很多都有自己的立场和业务场景,很难客观判断各种网关技术的优缺点和适合场景。本文从技术实现角度,对各种网关分分类,同时尽量理清各种网关的概念和适用场景(其实很难分清楚),方便大家进行讨论和决策

2023-11-20 19:51:53 926 1

转载 python fork多线程进程时的坑

Python在fork多线程的进程时,创建的子进程只包含一个线程,该线程是调用fork函数的那个线程的副本。在man fork中,有The child process is created with a single thread—the one that called fork().这句话,亲测的确如此。在多线程进程中,为了多线程的同步及互斥,会有锁,在fork时,这些锁会一同fork到子进程中,这会导致一些问题,见下文。个人建议,最好不要fork多线程的进程,除非你有能力解决这个问题。在python的m

2022-02-16 17:15:20 838

转载 Python Gevent和协程机制

参考资料http://www.gevent.org/contents.htmlhttps://uwsgi-docs-zh.readthedocs.io/zh_CN/latest/Gevent.htmlPython脚本的执行效率一直来说并不是很高,特别是Python下的多线程机制,长久以来一直被人们诟病。很多人都在思考如何让Python执行的更快一些,其中典型的方式包括:将复杂的代码转由C语言完成多进程并发执行多线程完成IO操作然后,人们讨论的更多的则是Gevent的协程机制。在理解Gevent

2021-12-11 12:01:44 683

转载 What‘s New in Dubbo3

Dubbo3 相比 2.7 版本进行了全面的升级,以下是新增的一些核心特性全新服务发现模型相比于 2.x 版本中的基于接口粒度的服务发现机制,3.x 引入了全新的基于应用粒度的服务发现机制, 新模型带来两方面的巨大优势:进一步提升了 Dubbo3 在大规模集群实践中的性能与稳定性。新模型可大幅提高系统资源利用率,降低 Dubbo 地址的单机内存消耗(50%),降低注册中心集群的存储与推送压力(90%), Dubbo 可支持集群规模步入百万实例层次。打通与其他异构微服务体系的地址互发现障碍。新模型使得

2021-08-08 13:08:06 358

原创 基于Sunflower演示项目学习下目前的Android Jetpack架构最佳实践

Sunflower项目是google发布的Android kotlin Demo项目,展示了使用Jetpack架构开发App的最佳实践),这个项目是持续更新的,第一次提交是2017.8,2021年6月还在更新,我的代码是7月下载的。 里面主要介绍google 最新的一些工具和理念,使用databinding,viewModel,liveData实现MVVM架构, 使开发者可以快速构建自己的APP项目,具体源码:https://github.com/googlesamples/android-sunflowe

2021-07-12 12:30:40 1510 2

转载 gRPC详细入门教程,Golang/Python/PHP多语言讲解

一、gRPC是什么?gRPC,其实就是RPC框架的一种,前面带了一个g,代表是RPC中的大哥,龙头老大的意思,另外g也有global的意思,意思是全球化比较fashion,是一个高性能、开源和通用的 RPC 框架,面向服务端和移动端,基于 HTTP/2 设计。RPC框架是什么?RPC 框架说白了就是让你可以像调用本地方法一样调用远程服务提供的方法,而不需要关心底层的通信细节。简单地说就让远程服务调用更加简单、透明。RPC包含了客户端(Client)和服务端(Server)常见的RPC框架有

2021-02-23 12:15:48 1074

转载 比较Windows10子系统 WSL 1 和 WSL 2

有了WSL2后, 做开发Windows 10比Mac有优势了将适用于 Linux 的 Windows 子系统从 WSL 1 升级到 WSL 2 的主要区别和优势是:提高文件系统性能, 支持完全的系统调用兼容性。WSL 2 使用最新、最强大的虚拟化技术在轻量级实用工具虚拟机 (VM) 中运行 Linux 内核。但是,WSL 2 不是传统的 VM 体验。安装 WSL 1 并更新到 WSL 2比较功能比较功能 功能 WSL 1 WSL 2 Windows 和 Li..

2021-02-03 14:46:10 1540

原创 Golang设置国内代理

Golang V1.13之后支持通过设置变量GOPROXY来修改代理地址,默认的代理服务器https://proxy.golang.org在国内访问经常出现timeoutGolang V1.13之后支持通过设置变量GOPROXY来修改代理地址,默认的代理服务器https://proxy.golang.org在国内访问经常出现timeout可以通过设置国内代理来加速下载详见:https://github.com/goproxy/goproxy.cn/blob/master/README.zh-.

2021-01-28 09:17:38 969

转载 Golang编码规范

简介:gofmt 大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码与官方推荐的格式保持一致,于是所有格式有关问题,都以gofmt的结果为准。gofmt大部分的格式问题可以通过gofmt解决,gofmt自动格式化代码,保证所有的go代码与官方推荐的格式保持一致,于是所有格式有关问题,都以gofmt的结果为准。行长一行最长不超过80个字符,超过的使用换行展示,尽量保持格式优雅。注释在编码阶段应该同步写好变量、函数、包的注释,最后可以利用godoc导出文档。.

2021-01-28 09:14:40 245

转载 架构蓝图--软件架构 “4+1“ 视图模型

引言我们已经看到在许多文章和书籍中,作者欲使用单张视图来捕捉所有的系统架构要点。通过仔细地观察这些图例中的方框和箭头,不难发现作者努力地在单一视图中表达超过其表达限度的蓝图。方框是代表运行的程序吗?或者是代表源代码的程序块吗?或是物理计算机吗?或仅仅是逻辑功能的分组吗?箭头是表示编译时的依赖关系吗?或者是控制流吗?或是数据流吗?通常它代表了许多事物。是否架构只需要单个的架构样式?有时软件架构的缺陷源于过早地划分软件或过分的强调软件开发的单个方面:数据工程、运行效率、开发策略和团队组织等。有时架构并不能解

2021-01-19 17:44:36 755

转载 Euraka-看这就够了

1.架构图架构图.png Euraka支持多副本机制 所有的Replicate互相保持数据(已注册的服务列表)同步 客户端可以保持与Replicate通信 2.基本流程 服务提供者启动服务,构建InstanceInfo对象,将此对象信息注册至服务中心 注册完成后会从注册中心拉取所有的服务列表缓存至本地 注册中心每隔30秒向服务提供者发送心跳,判断服务提供者是否存活, 同时进行续约服务 如果服务治理中心在90s内没有收到一个服务的.

2021-01-15 19:14:40 335

转载 2020年Vue、React 和 Angular:该选择哪个框架?

近几年 ,前端领域出现了两大玩家:Google 发布的 Angular、Facebook 开发的 JavaScript 库 React。在 2018 年,又有一个实力雄厚的玩家加入了这场竞争:Vue.js,它 很直白地表示出了自己 的豪心壮志——立志成为最受欢迎的 JavaScript 框架。在深入了解这些流行框架的总体比较之前,让我们先看看它们的起源。Vue、React 和 Angular 简史AngularGoogle 的一名员工 Misko Hevery 当时正...

2020-12-05 15:39:10 2612

转载 FCS Perspectives | 终身机器学习: 一种持续学习的范式

在第一届北美计算机华人学者年会暨计算技术前沿研讨会上,来自伊利诺伊大学芝加哥分校的刘兵教授以“打造能够终身学习的机器”为主题,介绍了终身机器学习(Lifelong Machine Learning,LML),引起了广泛关注。刘兵教授在 Frontiers of Computer Science (FCS) 2017年 第 3 期发表了一篇题为“Lifelong machine learn...

2019-08-19 08:52:58 803

转载 终身机器学习:一种可持续学习的范式

前言:最近发现了一篇很有意思的论文,有关集成学习中的可持续性的研究,这里翻译了一下,供了解和学习使用刘兵:美国芝加哥大学的计算机科学教授。他的研究包括情绪分析和意见挖掘、终身机器学习、数据挖掘、机器学习和自然语言处理。他目前担任ACM SIGKDD的主席,ACM Fellow, AAAI Fellow, and IEEE Fellow。下面是正文内容:引言:  机器学习(ML)...

2019-08-19 08:50:21 2646

原创 Ubuntu 16.04 Caffe 1.0.0编译安装问题

安装过程的主要问题是依赖的各种库版本兼容问题,有时即使编译成功了,运行时也会报错。目前使用 protobuf 3.6,opencv3.4.5, glog-0.3.3 gflags-2.0, 顺利解决问题。安装主要参考文章 https://blog.csdn.net/yhaolpz/article/details/71375762首先参考文章, 通过apt-get安装好依赖库。sudo ...

2019-08-01 11:09:44 633 1

转载 Android persistent机制

本文简单分析persistent属性的相关源码流程,总结persistent的作用及注意事项。前言在一次调试系统应用过程中,修改部分代码逻辑后,执行adb install -r 并启动,发现应用界面更新了,但是修改到的逻辑并没有变,还是之前的版本逻辑。分别执行了pm clear和am force-stop再起来应用,发现这两种做法进程id都没有变。于是直接kill掉对应进程id,发现进程i...

2019-08-01 11:06:04 4206

转载 Cross-compiling TensorFlow for the Raspberry Pi

Photo by oatsy40I love the Raspberry Pi because it’s such a great platform for software to interact with the physical world. TensorFlow makes it possible to turn messy, chaotic sensor data from camera

2017-11-29 20:34:07 1276

原创 python virtualenv虚拟环境介绍

最近折腾tensorflow的编译安装,重新用virtualenv, 发现生疏了,就简单记录下吧在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip安装到Python3的site-packages目录下。如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而

2017-11-29 20:30:58 2185

原创 程序员如何转型人工智能(机器学习)

我是一个工作时间比较久的全栈工程师,做过web开发,前端,后端,移动端,HTML5的开发。2016年底开始学习机器学习,做深度学习大概不到半年。在人工智能技术方面我肯定没有研究人工智能很多年的人有经验,但在怎样转型人工智能方面我还是有些体会的。 学习人工智能为什么比学习其他的编程技术要困难首先是人工智能整个领域特别大 我们常说的深度学习是机器学习的一个小分支,而机器学习又只是人工智能的一个小分支

2017-11-12 22:21:33 4974 1

转载 Scrapy爬虫框架介绍

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。

2017-10-27 22:21:07 1560

转载 Linux下终端利器tmux

如果仅仅只是多标签的功能,那么putty结合一些工具也可以做到,或者干脆使用xshell,当然tmux此类工具不仅仅是那么简单。另外一个选择使用tmux/screen工具的原因是,有时我们会经常需要SSH或者telent远程登录到Linux服务器,有一些任务需要长时间运行,比如系统备份、数据传输等。通常情况下我们都是开一个远程终端窗口,因为执行时间比较长,一般需要等待它执行完毕,在此过程中不能关闭窗口或者网络原因断开连接,断开之后就Game Over了。这个功能就有点类似nohup和setsid命令的实现了

2017-10-27 22:12:34 1089

原创 在Windows7上用Android Studio编译Tensorflow_Android_Demo

Tensorflow提供了一个[Android Demo] 昨天尝试了在Win7环境下编译下和运行这个Demo。在Window7下面我只编译Java部分的代码, jni部分的代码我直接用了官方jinkens编译出的so文件

2017-10-27 21:57:54 4473 4

原创 Tensorflow物体检测(Object Detection)

research

2017-10-27 21:46:25 16881 1

转载 Javascript高性能动画与页面渲染

No setTimeout, No setInterval如果你不得不使用setTimeout或者setInterval来实现动画,那么原因只能是你需要精确的控制动画。但我认为至少在现在这个时间点,高级浏览器、甚至手机浏览器的普及程度足够让你有理由有条件在实现动画时使用更高效的方式。什么是高效页面是每一帧变化都是系统绘制出来的(GPU或者CPU)。但这种绘制又和PC游戏的绘制不同,它的最高绘制频率

2017-08-13 21:07:28 1245

转载 浅析 requestAnimationFrame

相信现在绝大多数人在 JavaScript 中绘制动画已经在使用 requestAnimationFrame 了,关于 requestAnimationFrame 的种种就不多说了,关于这个 API 的资料,详见 http://www.w3.org/TR/animation-timing/,https://developer.mozilla.org/en/docs/Web/API/window.r

2017-08-13 21:04:46 1828

转载 架构师的必备素质和成长途径

2016年11月18-20日SDCC 2016中国软件开发者大会,易宝支付CTO陈斌给我们带来了“架构师的成长之路”的演讲。主要谈及了架构师的必备素质和成长途径及给准架构师的建议。它山之石可以攻玉,尽管每个架构师都有自己的成长路径,但是了解其他架构师的成长之路,对未来想成为架构师的人有一定的借鉴价值。首先以我自己的成长过程为例,描述一下我的架构师之路。图1 我的架构师之路1989年研究生毕业后进入

2017-07-31 22:53:12 1204

转载 The Netflix stack, using Spring Boot - Part 2: Hystrix

Netflix has always been a proud contributor to the open source world. It's fascinating to see how each of their libraries facilitate a lot of tasks and can help create your development in a tremendous

2017-07-08 14:47:40 1101

转载 JavaScript获取DOM元素位置和尺寸大小

在一些复杂的页面中经常会用JavaScript处理一些DOM元素的动态效果,这种时候我们经常会用到一些元素位置和尺寸的计算,浏览器兼容性问题也是不可忽略的一部分,要想写出预想效果的JavaScript代码,我们需要了解一些基本知识。基础概念为了方便理解,我们需要了解几个基础概念,每个HTML元素都有下列属性offsetWidthclientWidthscrollWidthoffsetHeightcl

2017-07-08 14:45:33 832

转载 程序员要拥抱变化,聊聊Android即将支持的Java 8

原文链接:http://wetest.qq.com/lab/view/308.html 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。WeTest 导读Java 9预计今年也会正式发布,Java 8这个最具变革性且变革性最适于GUI程序的版本,Android终于准备正式支持。从自己开发JavaFx的感受,说一说Java 8应该使用的新特性。程序员,你应该拥抱变化。 (注:本文不讲具

2017-05-07 22:02:54 1116

转载 学会“投机取巧”——Redis之父九条忠告,如何成为“一打十”的程序员

坊间流传着“十倍程序员”的传说,所谓“十倍程序员”是指在同样时间内可以做“普通”程序员十倍的工作的程序员,而所谓“普通”是指那些擅长自己的领域,但不具有“十倍程序员”那样特殊魔力的程序员。更准确地说,普通程序员就是指那些具有平均编程效率的专业程序员。在程序员群体中,对于“十倍程序员”的存在持有极度分化的观点:一些人认为这样的人绝不存在,另一些人则认为不仅存在,而且甚至存在“百倍程序员”。如果你认为

2017-05-07 21:41:15 1389

转载 Android Support Library详细介绍

原文 http://www.jianshu.com/p/a5aa5f209895 网上对Android Support Library中各个依赖包介绍的中文资料太少了,结合官方文档和有限的参考资料做了一次总结,有描述得不对的地方还请指正。一、主工程、依赖包、jar包、android.jar、Android Support Library的关系  一个Android工程通常包括主工程和依赖包,依赖包

2017-05-07 21:37:31 3178

转载 一文弄懂神经网络中的反向传播法——BackPropagation

最近在看深度学习的东西,一开始看的吴恩达的UFLDL教程,有中文版就直接看了,后来发现有些地方总是不是很明确,又去看英文版,然后又找了些资料看,才发现,中文版的译者在翻译的时候会对省略的公式推导过程进行补充,但是补充的又是错的,难怪觉得有问题。反向传播法其实是神经网络的基础了,但是很多人在学的时候总是会遇到一些问题,或者看到大篇的公式觉得好像很难就退缩了,其实不难,就是一个链式求导法则反复用。如果

2017-03-08 23:10:26 1429 1

转载 史上最简单Android源码编译环境搭建方法(基于Docker)

利用Docker镜像确实可以简化编译环境的配置,现在Docker的用处还是挺多的,例如TensorFlow也可以在Docker上玩。有史以来,Android源码编译环境的搭建始终是一件麻烦事儿。网上有数不清的文章介绍如何编译Android源代码,但是他们要么方法复杂、步骤太多;要么自称解决了一些编译问题(需要修改头文件,系统配置等),让人对其可信度产生质疑。有的童鞋硬着头皮照做了,但是由于伟大的G

2017-03-08 22:01:31 7656

转载 Android请不要滥用SharedPreference

SharedPreference是Android上一种非常易用的轻量级存储方式,由于其API及其友好,得到了很多很多开发者的青睐。但是,SharedPreference并不是万能的,如果把它用在不合适的使用场景,那么将会带来灾难性的后果;本文将讲述一些SharedPreference的使用误区。存储超大的value第一次看到下面这个sp的时候,我的内心是崩溃的:一个默认的sp有90K,当我打开它的

2017-03-08 21:27:21 9414 4

原创 Redex安卓Apk优化技术研究

Redex介绍ReDex 是 Facebook 开源的工具,通过对字节码进行优化,以减小 Android Apk 大小,同时提高 App 启动速度。 GitHub:ReDex github,官网主页:fbredex.com本次研究完成了Redex在Ubuntu linux上的安装和配置,以卡包App为例进行了Redex优化测试, 实验了Redex优化的主要流程, 包括Inderdex。

2017-02-28 21:48:24 2024

原创 安卓源码项目进行gradle编译改造常见问题解决

最近把依赖安卓源码编译环境的多个项目切换到gradle编译环境,需要把一些项目改成lib库依赖,基本思路是把通用的代码和第三方jar放在一个utils库项目中, 其他子项目改为lib库,子项目统一依赖utils,主项目依赖9个子项目,解除子项目对主页面的依赖,最后gradle编译成一个apk。我整理了一些遇到的常见问题,希望对大家有帮助。

2017-02-28 21:47:07 2039

转载 打造DIY版Echo:树莓派+ Alexa 语音服务

原文 https://aws.amazon.com/cn/blogs/china/raspberry-alexa/关于本文本文详细阐述了如何在Java客户端和Node.js服务器上使用和测试Alexa语音服务。本实例需要用Node.Js来获取Login的授权码。本指导提供详细的操作指南对于在取得示例授权码、依赖性和在运行Pi的过程中相应的硬件部署。对于Windows, Mac,或者通用的Linux

2017-02-26 21:39:32 2480

转载 Android APT(编译时代码生成)最佳实践

越来越多第三方库使用apt技术,如DBflow、Dagger2、ButterKnife、ActivityRouter、AptPreferences。在编译时根据Annotation生成了相关的代码,非常高大上但是也非常简单的技术,可以给开发带来了很大的便利。Annotation如果想学习APT,那么就必须先了解Annotation的基础,这里附加我另外一篇文章的地址:http://www.taow

2017-02-19 18:26:17 1313

转载 Android 开发之 App 启动时间统计

作为 Android 开发者,想必多多少少要接触启动速度优化相关的事情,当用户越来越多,产品的功能也随着迭代越来越多,App 逐渐变得臃肿是一件很常见的现象,甚至可以说是不可避免的现象,随之而来的工作就是优化 App 性能,其中最主要的一项就是启动速度优化。但本文的主角并不是启动速度优化,而是启动时间统计。转载请注明出处:单刀土豆一 启动类型工欲善其事,必先利其器。想要优化 App 的启动速度,必

2017-02-19 18:24:48 972

原创 OGNL表达式介绍

OGNL是Object-Graph Navigation Language的缩写,它是一种功能强大的表达式语言(Expression Language,简称为EL),通过它简单一致的表达式语法,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。                -------百度百科最近折腾动态SQL使用了ONG

2017-01-25 20:20:47 812 4

2016年南京软件开发者大会《 高效率的Android开发》PPT

从2009年到现在,Android开发已经发生了翻天覆地的变化。本次演讲PPT将分享通过组合使用大量新框架,模式和工具,高效率的开发Android App。主要介绍ButterKnife,Volley,Retrofit,Gson等开发框架,Rx编程模式,Bugly等第三方开发平台工具

2016-05-04

Android系统介绍和学习路线培训

2014年11月在公司内部培训的PPT,比较系统地介绍了Android的来源,发展,优势和存在的问题,介绍了一些Android比较新的领域和技术,总结了Android开发的学习路线图,推荐了开发相关的网站,书籍和资料

2015-09-22

如何合理设计HybridApp: 移动应用跨平台开发经验分享

这是我5月18日在火龙果讲堂做的分享PPt,详细介绍了HybridApp的适用场景,局限性,技术发展情况,相关技术框架和工具。分享了使用HTML5,AngularJs,Ionic,PhoneGap框架开发跨平台移动应用的实际项目经验

2014-05-29

RaspberryPi使用舵机网页远程控制摄像头转动

RaspberryPi使用舵机网页远程控制摄像头转动, 使用php,servoBlaster库,js实现,视频监控使用motion

2013-06-01

android downlaod manager下载管理器

功能完整强大的android下载管理器, 支持多任务管理,断点续传,暂停下载, 下载任务图标设置,状态栏通知(进度条),媲美国内知名软件市场hiapk,360手机助手等内置的下载管理器。

2012-11-23

手机号码归属地查询软件(附手机号码归属地文件)

手机号码归属地查询软件(附手机号码归属地文件)

2011-08-09

android vcard syncML源码

Android-vcard: Java vCard library。 android下的syncML代码,做联系人同步的可以参考一下。

2011-08-09

jquery表单验证插件

jquery表单验证插件formValidator3 很强大很好用

2008-12-16

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除