首页 文章 精选 留言 我的

精选列表

搜索[索引检测],共10009篇文章
优秀的个人博客,低调大师

PouchContainer Goroutine Leak 检测实践

0. 引言 PouchContainer 是阿里巴巴集团开源的一款容器运行时产品,它具备强隔离和可移植性等特点,可用来帮助企业快速实现存量业务容器化,以及提高企业内部物理资源的利用率。 PouchContainer 同时还是一款 golang 项目。在此项目中,大量运用了 goroutine 来实现容器管理、镜像管理和日志管理等模块。goroutine 是 golang 在语言层面就支持的用户态 “线程”,这种原生支持并发的特性能够帮助开发者快速构建高并发的服务。 虽然 goroutine 容易完成并发或者并行的操作,但如果出现 channel 接收端长时间阻塞却无法唤醒的状态,那么将会出现 goroutine leak 。 goroutine leak 同内存泄漏一样可怕,这样的 goroutine 会不断地吞噬资源,导致系统运行变慢

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

Android WIFI检测与设置

WIFI是无线通信协议,可以允许手机直接连接到无线网络。在现在3G资费还比较贵的情况下,WIFI对于手机来说是很重要的,我们可以很方便的下载软件,音乐等资源。Android手机必须要有WIFI网卡才能支持WIFI。Android应用程序有时候需要对WIFI网卡进行操作,从而操作WIFI网络。 WIFI网卡有一些状态,由一系列的整形常量来表示。 常量名 常量值 网卡状态 WIFI_STATE_DISABLED 1 WIFI网卡不可用 WIFI_STATE_DISABLING 0 WIFI正在关闭 WIFI_STATE_ENABLED 3 WIFI网卡可用 WIFI_STATE_ENABLING 2 WIFI网卡正在打开 WIFI_STATE_UNKNOWN 4 未知网卡状态 在应用程序中操作WIFI网卡一定的权限。WIFI 的主要操作权限有四个:CHANGE_NETWORK_STATE :允许修改网络状态的权限。 CHANGE_WIFI_STATE :允许修改 WIFI 状态的权限。 ACCESS_NETWORK_STATE :允许访问网络状态的权限。 ACCESS_WIFI_STATE :允许访问 WIFI 状态的权限。 在AndroidManifest.xml文件中添加权限。 XML/HTML代码 <uses-permissionandroid:name="android.permission.CHANGE_NETWORK_STATE"></uses-permission> <uses-permissionandroid:name="android.permission.CHANGE_WIFI_STATE"></uses-permission> <uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> 改变WIFI网卡的状态对WIFI网卡进行操作需要通过WifiManager对象来进行,获取该对象的方法如下: WifiManager wifiManger=(WifiManger)Context.getSystemService(Service.WIFI-SERVICE); 打开WIFI网卡 wifiManager.setWifiEnabled(true); 关闭WIFI网卡 wifiManager.setWifiEnabled(false); 获取网卡当前的状态 wifiManager.getWifiState(); 需要说明的是由于Android模拟器不支持WIFI和蓝牙所以程序执行时返回的网卡状态都是WIFI_STATE_UNKNOWN:网卡未知的状态。此程序需要在真机上进行调试才会显示正确的运行结果。 打开WIFI网卡: Java代码 WifiManagerwifiManager=(WifiManager).getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(true); 关闭WIFI网卡: Java代码 WifiManagerwifiManager=(WifiManager).getSystemService(Context.WIFI_SERVICE); wifiManager.setWifiEnabled(false); 本文转自06peng 51CTO博客,原文链接:http://blog.51cto.com/06peng/962819,如需转载请自行联系原作者

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

Android内存检测工具

无论怎么小心,想完全避免bad code是不可能的,此时就需要一些工具来帮助我们检查代码中是否存在会造成内存泄漏的地方。 Androidtools中的DDMS就带有一个很不错的内存监测工具Heap(这里我使用eclipse的ADT插件,并以真机为例,在模拟器中的情况类似)。用 Heap监测应用进程使用内存情况的步骤如下: 1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图、Heap视图都是打开的; 2. 将 手机通过USB链接至电脑,链接时需要确认手机是处于“USB调试”模式,而不是作为“Mass Storage”; 3. 链接成功后,在DDMS的Devices视图中将会显示手机设备的序列号,以及设备中正在运行的部分进程信息; 4. 点击选中想要监测的进程,比如system_process进程; 5. 点击选中Devices视图界面中最上方一排图标中的“Update Heap”图标; 6. 点击Heap视图中的“Cause GC”按钮; 7. 此时在Heap视图中就会看到当前选中的进程的内存使用量的详细情况。 说明: a) 点击“Cause GC”按钮相当于向虚拟机请求了一次gc操作; b) 当内存使用信息第一次显示以后,无须再不断的点击“Cause GC”,Heap视图界面会定时刷新,在对应用的不断的操作过程中就可以看到内存使用的变化; c) 内存使用信息的各项参数根据名称即可知道其意思,在此不再赘述。 如何才能知道我们的程序是否有内存泄漏的可能性呢。这里需要注意一个值:Heap视图中部有一个Type叫做data object,即数据对象,也就是我们的程序中大量存在的类类型的对象。在data object一行中有一列是“Total Size”,其值就是当前进程中所有Java数据对象的内存总量,一般情况下,这个值的大小决定了是否会有内存泄漏。可以这样判断: a) 不断的操作当前应用,同时注意观察data object的Total Size值; b) 正常情况下Total Size值都会稳定在一个有限的范围内,也就是说由于程序中的的代码良好,没有造成对象不被垃圾回收的情况,所以说虽然我们不断的操作会不断的生成很多对 象,而在虚拟机不断的进行GC的过程中,这些对象都被回收了,内存占用量会会落到一个稳定的水平; c) 反之如果代码中存在没有释放对象引用的情况,则data object的Total Size值在每次GC后不会有明显的回落,随着操作次数的增多Total Size的值会越来越大, 直到到达一个上限后导致进程被kill掉。 d) 此处已system_process进程为例,在我的 测试环境中system_process进程所占用的内存的data object的Total Size正常情况下会稳定在2.2~2.8之间,而当其值超过3.55后进程就会被kill。 总之,使用DDMS的Heap视图工具可以很方便的确认我们的程序是否存在内存泄漏的可能性。 版权声明:本文出自 smalllin 的51Testing软件测试博客:http://www.51testing.com/?344504 原创作品,转载时请务必以超链接形式标明本文原始出处、作者信息和本声明,否则将追究法律责任。 最新内容请见作者的GitHub页:http://qaseven.github.io/

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

屏蔽Android PIE检测机制

最近做NDK开发相关的项目,总会时不时冒出下面这句打印信息: error: only position independent executables (PIE) are supported.后面一查,原来是Android版本新添加的保护机制,以前在RK3168 android4.1上没有看到这个东西。 于是在Android源代码下找到: bionic/linker/linker.cpp 搜索PIE: 找到以下这段: //注释PIE选项 #if 0 ElfW(Ehdr)* elf_hdr = reinterpret_cast<ElfW(Ehdr)*>(si->base); if (elf_hdr->e_type != ET_DYN) { __libc_format_fd(2, "error: only position independent executables (PIE) are supported.\n"); exit(EXIT_FAILURE); } #endif将其注释再重新编译系统即可。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册