首页 文章 精选 留言 我的

精选列表

搜索[PaaS框架],共10000篇文章
优秀的个人博客,低调大师

android网络框架Retrofit 同步异步

http://blog.csdn.net/jiguangcanhen/article/details/39006197 同步的方式: 1)首先定义要接口。注解Get表示使用的Get请求方式,{user}代表要被替换的数据 public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user); } 2)初始化RestAdapter,并利用动态代理来创建的接口对象。 RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .build(); GitHubService service = restAdapter.create(GitHubService.class); 3)使用网络访问并返回 List<Repo> repos = service.listRepos("octocat"); 异步的方式: @POST("/users/new") void createUser(@Body User user, Callback<User> cb); 注:body注解,在进行请求前对象会被转换器进行相应的数据转换。 前两部和之前的相同,不同在于最后一个参数变成了CallBack对象。 controller.getLogin(mail, password,newCallback<UserDataModel>() { @Override publicvoidfailure(RetrofitError error) { //TODOAuto-generated method stub } @Override publicvoidsuccess(UserDataModel ldm, Response response) { //TODOAuto-generated method stub }); 可以看到当请求网络返回之后,会在failure中和success中进行回调,而且默认的数据转换器会把相应的json字符串转换为对象。(当然,我们也可以定义自己的数据转换器) 定义自己的数据转换器: publicclassMyConverterimplementsConverter { @Override publicObject fromBody(TypedInput body, Type type)throwsConversionException { StringBuffer result =newStringBuffer(); try{ InputStream is = body.in(); byte[] buffer =newbyte[1024]; while(is.read(buffer) != -1){ result.append(newString(buffer,"UTF-8")); } }catch(IOException e) { e.printStackTrace(); } returnresult; } @Override publicTypedOutputtoBody(Objectobject) { returnnull; } } 上面的自定义数据转换器,会在请求成功之后,返回给我们字符串,而不是相应的被gson转换过格式的字符串。 RestAdapter restAdapter =newRestAdapter.Builder() .setEndpoint(“url”) .setConverter(newMyConverter()) .build(); 在创建RestAdapter之后创建设置使用自己的数据转换器就可以了。 我们还可以灵活的进行其他的配置: 1)设置请求拦截器,会在请求发出前,进行拦截。 RequestInterceptor requestInterceptor = new RequestInterceptor() { @Override public void intercept(RequestFacade request) { request.addHeader("User-Agent", "Retrofit-Sample-App"); } }; RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .setRequestInterceptor(requestInterceptor) .build(); 2)设置错误控制器 class MyErrorHandler implements ErrorHandler { @Override public Throwable handleError(RetrofitError cause) { Response r = cause.getResponse(); if (r != null && r.getStatus() == 401) { return new UnauthorizedException(cause); } return cause; } } RestAdapter restAdapter = new RestAdapter.Builder() .setEndpoint("https://api.github.com") .setErrorHandler(new MyErrorHandler()) .build(); 3)设置log日志。 RestAdapter restAdapter = new RestAdapter.Builder() .setLogLevel(RestAdapter.LogLevel.FULL) .setEndpoint("https://api.github.com") .build(); 上面只是简单介绍了它的使用,其实它还有很多的功能,Get,Post,Put,Delete,Head……具体请参见官方网址。 版权声明:本文为博主原创文章,未经博主允许不得转载。 本文转自wanqi博客园博客,原文链接:http://www.cnblogs.com/wanqieddy/p/4933606.html如需转载请自行联系原作者

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

医院信息化框架概览

在常主任的带领下,今天就医院的一些信息化建设方面的概览及基础架构进行了一些总结和交流。内容如下: his------门诊,住院,医生站,电子病历等。 pacs-----影像数据,全院级含超声,病理,内镜,乳腺等。 lis------检验,需要主动给his接口 pacs、lis、his都有自己的数据库,表结构、说明书、字段都得拿出来,属于维护性源码。 手术麻醉与ICU(病人躺床上不能动的那种) 分诊叫号也都得给接口 服务器在使用时不要使用到超过容量的80%,位密度原理,可能靠近主轴附件数据读的就有问题。 SQL要用2008R2,C语言--程序员语言,pascal--学生语言,VB--娃娃语言 powerbuiler效率高但图形界面做的不好。 X86---40根地址线(1TB内存),虚拟48根(256TB) X64(50根地址线--1PB) mpeg1 1.5m VCD mpeg2 3-10m DVD mpeg3 20-40m 高清电视 mpeg4 48-96m 网络 SIFT SURT 图像检索标准 0XB800编码地址,0X0000 互联网医疗 移动医疗 精准医疗 慢病管理 健康管理 大数据研究------把各个业务核心数据统计出来,比如门诊赚了多少钱,哪些外地人过来就诊等,有点类似数据挖掘。 内外网安全,网闸----摆渡概念 华龙总医院 计算机条码规范 IP地址 vlan 科室 本文转自 流颗星 51CTO博客,原文链接:http://blog.51cto.com/liukexing/1964609

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

Sentry--错误日志收集框架

简介 Sentry’s real-time error tracking gives you insight into production deployments and information to reproduce and fix crashes.---官网介绍 Sentry是一个实时事件日志记录和汇集的日志平台,其专注于错误监控,以及提取一切事后处理所需的信息。他基于Django开发,目的在于帮助开发人员从散落在多个不同服务器上的日志文件里提取发掘异常,方便debug。Sentry由python编写,源码开放,性能卓越,易于扩展,目前著名的用户有Disqus, Path, mozilla, Pinterest等。它分为客户端和服务端,客户端就嵌入在你的应用程序中间,程序出现异常就向服务端发送消息,服务端将消息记录到数据库中并提供一个web节目方便查看。 DSN(Data Source Name) 当你完成sentry配置的时候,你会得到一个称为“DSN”的值,看起来像一个标准的URL。Sentry 服务支持多用户、多团队、多应用管理,每个应用都对应一个 PROJECT_ID,以及用于身份认证的 PUBLIC_KEY 和 SECRET_KEY。由此组成一个这样的 DSN: '{PROTOCOL}://{PUBLIC_KEY}:{SECRET_KEY}@{HOST}/{PATH}{PROJECT_ID}' PROTOCOL 通常会是http或者https,HOST 为 Sentry 服务的主机名和端口,PATH 通常为空。 Sentry支持的语言: 安装 这里有两种方式安装sentry,我这里介绍用docker的安装方式(官网推荐用docker)。 sentry运行需要的服务: PostgreSQL Redis Memcached Outbound Email 启动sentry需要依赖的服务: Web Service Background Workers Cron Process 容器安装sentry需要的环境: Docker 1.10.0+ Compose 1.6.0+(optional) 另外redis、数据库等也可以配置cluster,并结合HAProxy使用。我这里docker容器全部只安装在了一台机器(Ubuntu1404)上。 安装docker 增加GPG key: 1 2 3 4 $ sudo apt-getupdate $ sudo apt-get install apt-transport-httpsca-certificates $ sudo apt-keyadv--keyserverhkp: //p80 .pool.sks-keyservers.net:80\ --recv-keys58118E89F3A912897C070ADBF76221572C52609D 配置apt仓库: 在/etc/apt/sources.list文件最好追加一行: 1 debhttps: //apt .dockerproject.org /repo ubuntu-trustymain 安装docker-engine: 1 2 3 $ sudo apt-getupdate $ sudo apt-get install linux-image-extra-$( uname -r)linux-image-extra-virtual $ sudo apt-get install docker-engine 2、安装docker-compose 使用pip安装,如果没有pip需要先安装: 1 2 $ sudo apt-get install python-pip $ sudo pip install docker-compose 3、构建容器并创建数据库和sentry安装目录 1 2 3 $ sudo apt-get install git $ sudo gitclone $ sudo mkdir -pdata/{sentry,postgres} 4、生成secret key并添加到docker-compose文件里: 1 2 3 4 $ sudo docker-composerun-- rm webconfiggenerate-secret-key #这里复制生成的字符串 $ sudo vimdocker-compose.yml #取消SENTRY_SECRET_KEY的注释,并把刚刚复制的字符串插入其中,类似如下: 5、重建数据库,并创建sentry超级管理员用户 1 $ sudo docker-composerun-- rm webupgrade 这里采用交互方式创建用户: upgrade过程: 创建用户,sentry新建的时候需要一个超级管理员用户: 6、启动所有的服务: 1 $ sudo docker-composeup-d 7、访问sentry 打开浏览器,输入url:http://ipaddress:9000 访问之前可以检查下容器和端口情况: docker ps看下当前运行的容器: netstat查看端口打开情况: 登陆界面,这里会提示你的Root URL,如果不想更改继续下一步即可完成: 页面展示: 至此sentry搭建完成! 补充: Sentry目前用户类型有四种: 超级管理员, 管理员,普通用户和System agents. 超级用户只能通过命令行来创建,其他用户可以自己注册或由其他用户邀请注册加入,然后由超级管理员或管理员分配项目和权限。为了更好支持团队协助以及信息安全,新版本Sentry(5.4.2)经过了重新设计,重新设计后的Sentry以Team为中心组织权限。所谓Team就是一个团队,一些用户组织在一起对某些项目有操作权限的组织。一个项目只能属于一个Team, 一个用户却可以属于多个Team, 并可在不同Team中扮演不同角色, 如用户A在Team X是管理员而在Team Y中是System agents. Sentry对用户角色的指定只能到Team级别,不能到Project级别, 所以将某个用户加入到某个Team之后,这个用户就对所有所有属于这个Team下所有project有了相同的权限。 超级管理员: 能创建各种用户, team和project只能由超级管理员创建。项目的一些设置比如改变Owner, 数据公开可见与否(设为public的数据可以通过url不登陆也能查看)以及客户端domain限制的设定。另外还有管理项目的api key(客户端只有得到此api key才能向Sentry发送消息)的权限等等。 管理员: 能创建用户, team和项目设定中除改变owner之外的权限, 可以对项目中具体数据做resolve, bookmark, public/public和remove操作。 普通用户: 无Team界面,只能对项目中具体数据做resolve, bookmark, public/unpublic和remove操作。 System agents: 无Team界面,只能对项目中具体数据做bookmark, unpublic和remove操作。 参考链接: docker安装:https://docs.docker.com/engine/installation/linux/ubuntulinux/ sentry安装:https://docs.sentry.io/server/installation/ 本文转自Jx战壕 51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1868597,如需转载请自行联系原作者

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

JMF介绍之媒体框架一

JMF(Java Media Framework)是Sun公司提出的Java媒体架构。它是对应Java 2平台标准版(J2SE)的一种可选用的应用编程接口(API)。JMF的源代码通过SCSL(Sun社团源代码许可模式)发布这一强大的媒体工具包,可以在任何版本(1.1.x及以上版本)的Java平台上的运行。 JMF2.1.1技术提供了先进的媒体处理能力,从而扩展了Java平台的功能。JMF所提供的多媒体功能如下: l可以在Java Applet和应用程序中播放各种媒体文件。它提供了对各种主要媒体形式和编码的支持,如JPEG、H.263、MP3、Macromedias Flash。JMF2.1.1还支持多种媒体类型如Quicktime、MOV、Microsoft AVI和MPEG-1。 l在互联网上传输音频和视频数据流。 l可以利用摄像机一类的设备截取音频和视频并保存为多媒体文件。 l处理多媒体文件转换文件格式。 l在互联网上广播音频和视频数据。 1.JMF基本构架 JMF的两层架构: (1)相对上层的负责多媒体文件的控制,使用和处理,并支持网络资源和识别采集设备等额外控制功能; (2)相对下层不仅提供编解码器,渲染器,还提供plug-in架构来直接存取多媒体文件使JMF能更轻易的被延伸和定制; JMF的架构图: 图1 JMF架构图 2.JMF的运作模式 图2根据VCR的运作模式来对比JMF运作过程,我们可以发现JMF与真实世界中的VCR运作模式相似。整个过程如同是VCR提供了一个熟悉的构造模型来录影(音)、处理、以及呈现基于时间的媒体(time-based media)。当你使用VCR播放一个电影时,你是以录影带的方式提供VCR一个媒体流(media stream)。VCR将之读入并分析、解译录影带上的资料,并把适当的讯号送到用户的电视和音响。JMF也是使用这个同样的模型架构。一个数据源(data source)会将媒体流(media stream)封装起来,就有如录影带一般。而一个播放器(player)会提供处理以及控制,类似VCR所提供的控制机制。使用JMF播放、和捕捉影音则需要适当的输入输出装置如麦克风、照相机、音响、以及屏幕等等。 图2 VCR运作模式 3.JMF上层结构 3.1时间模型(time model) JMF对媒体时间信息的获取如下 lTimeBase Time:系统当前时钟。 lMediaTime:一个媒体流的整个播放时间。 lMediaStartTime:媒体开始播放的时间。 lTimeBaseStartTime:当开始播放的时候TimeBase的时间。 lRate:时钟和TimeBase的关系,可以是1倍2倍或负值(重放playback的时候)。 这样我们得到的播放位置的公式为: MediaTime = MediaStartTime + Rate (TimeBaseTime - TimeBaseStartTime) 3.2管理器(managers) JMF API主要由一些接口组成,这些接口定义了用于捕获(capture)、处理(process)和播放(present)基于时间的媒体的对象的行为和相互作用的过程。为了能和已经存在的类实现无缝连接,JMF引入了一些中介对象—管理器(Manager)。JMF中使用了四种Manager: lManager:管理器(Manager)负责处理播放器(Player)、处理器(Processor)、数据源(DataSource)、数据池(DataSink)的创建。 lPackageManager:保存用户创建的播放器(Player),处理器(Processor),数据源(DataSource),数据池(DataSink)类的注册信息。 lCaptureDeviceManager:对可用的媒体捕获设备进行注册。 lPlugInManager:保持底层的JMF插件(如复用器(Multiplexers),分离器(DemultiPlexers),编解码器(Codecs),渲染器(Effects)和显示器(Render)的注册信息。 3.3事件模型(event model) JMF是利用一个结构化的事件报告机制来使基于JMF的程序获知媒体系统当前的状态,并使它能对媒体驱动的错误状态,比如未知源错误状态(Resource Unavailable)进行响应。在任何时候,当一个JMF对象需要报告当前的状态,它将发出一个MediaEvent事件。 对于任何一个能发送MediaEvent的JMF对象而言,JMF都定义了一个相应的侦听接口(listener interface)。为了能在某一MediaEvent事件发生时得到相应的通知,必须实现适当的侦听接口以及在对应的类体中注册该接口中处理MediaEvent事件的方法体,并通过调用addListener方法来接收此MediaEvent事件。 JMF中的Controller objects,例如播放器(Player)和处理器(Processor),以及Control objects例如GainControl都可以发出MediaEvent事件。 JMF的事件模型如图3所示: 图3 JMF架构的事件模型 3.4数据模型(data model) JMF的媒体播放器利用数据源(DataSources)对象来进行媒体内容的传输。数据源(DataSource)对象封装了该媒体的位置信息和能够播放该媒体的软件和相关协议信息。一旦封装后,该数据源就不能用于传递其它媒体数据。 DataSource通常用两种方式来定义,媒体定位器(MediaLocator) 或URL(Universal Resource Locator)。媒体定位器(MediaLocator)类似于URL而且可以创建自一个URL,即使在没有安装相应的协议处理机制的情况下,也能构造MediaLocator。(在Java中, 构建一个URL必须在系统中有相应的协议处理机制。) 数据源(DataSource)可以管理一组源数据流(SourceStream)对象。标准的数据源(DataSource)是以一定数量字节作为一个传输单位的。而缓冲数据源(Buffer Data Source)用一个缓冲(Buffer)对象作为传输单位。JMF定义了几种数据源(DataSource)对象如图4所示: 图4 JMF架构的数据模型 3.4.1Push and Pull数据源 媒体数据可以从不同的数据源得到的。比如本地的或网络上的文件或实时的广播。JMF根据数据传输的发起点的不同,对这些数据源进行了分类: (1)Pull Data-Source:客户端发起数据传输并进行控制。适用于这种数据传输方式的协议有HTTP和FILE。JMF定义了两类Pull Data-Source,PullDataSource和PullBufferDataSource。后者是用一个缓冲(Buffer)对象进行数据传输的。 (2)Push Data-Source:服务器端发起数据传输并进行控制。此种数据源包括媒体广播,组播和VOD。相应的协议有RTP协议和SGI公司为其VOD系统开发的MediaBase协议。JMF定义了两类Push Data-Source,PushDataSource和PushBufferDataSource。 3.4.2特殊的数据源 JMF定义了两类特殊的数据源,克隆数据源(cloneable data sources)和合并数据源(merging data sources)。 一个克隆数据源可以克隆一个pull或push数据源。你可以调用管理器(manager)的createCloneableDataSource方法并传递相应的数据源对象来克隆一个数据源。一旦一个数据源被传递到createCloneableDataSource方法,你就只能对这个克隆数据源以及它的克隆体进行处理,原始数据源对象不能被直接使用。 克隆数据源(cloneable data sources)实现SourceCloneable接口,其中定义了一个方法叫createClone。通过调用该方法,你可以为你的原始数据源复制出任意数量的克隆体,并由创建它们的克隆数据源(cloneable data sources)对其进行管理。 一个合并数据源(merging data sources)可以将来自于多个数据源的源数据流合并为一个数据源。这样可以对一系列得数据源进行统一管理。 你可以调用管理器(manager)的createMergingDataSource方法并传递相应的数据源来创建一个合并数据源。需要注意的是,待合并的数据源必须是同一种类型的。例如你不能将一个PullDataSource和一个PushDataSource合并。该合并源的持续时间为其中最长的数据源的持续时间。它的内容类型(ContentType)为application/mixed-media。 3.4.3数据格式(data formats) 在JMF架构中,Format对象中保存了媒体的格式(format)信息。它并不包括编码参数和全局时间信息。只是描述了该格式的编码名称和数据类别。图5表示JMF对音频格式和视频格式的定义: 图5 JMF架构的数据格式 在AudioFormat中,描述了音频格式的属性,如采样频率、每次采样的数据位数和信道数等等。在VideoFormat中则描述了视频数据的类型如H.263等。 3.6控制器(controls) JMF架构中,控制器(Control)提供了对对象的属性进行设置和查询的机制。控制器(Control)为相应的用户提供了对对象进行操纵的接口。这些对象包括Controller(播放器player或处理器processor)对象,DataSource对象,DataSink对象和其他JMF插件。 3.6.1标准控制器(standard controls) JMF提供的标准控制器如图6所示: 图6 JMF架构的标准控制 (1)CachingControl:监视和显示下载进度。 (2)GainControl:对媒体播放属性(如音量)进行控制,它还提供了对媒体播放属性变化的监控。图7所示: 图7 GainControl模型 (3)Multiplexer和DataSink:对数据流进行读写。 (4)FramePositionControl和FrameGrabbingControl:为处理器和播放器提供了基于帧的处理能力。例如在播放时能提供基于帧的定位、对视频流进行静态帧的读写等。 (5)TrackControl:是FormatControl中的一种。提供了对媒体数据中单独信道的处理功能。 (6)PortControl和MonitorControl:提供了对媒体捕获设备的控制功能。 (7)BufferControl:提供了对用户端Buffer的控制功能。 3.6.2编解码控制器(codec controls) JMF同样提供了几种对硬件和软件编解码器进行控制的编解码器: (1)BitRateControl:控制编码率和输出媒体的编码率。 (2)FrameRateControl:提供帧率的修改。 (3)H261Control:提供了对H.261协议的视频编码中的静态图像传输模式的控制。 (4)H263Control:提供了对H.263协议中编码参数如非限制矢量算术编码等的控制。 (5)KeyFrameControl:提供了关键帧之间间隔的规范。 (6)MpegAudioControl:提供了基于MPEG的音频的编码能力信息和规范。 (7)QualityControl:提供了在编解码过程中播放质量与CPU占用率的最佳的平衡规范。 (8)SilenceSuppressionControl:提供了基于音频编解码的静音压缩规范。 3.7用户接口组件(user interface components) 控制器(control)可以提供接入到用户控制组件,以使得用户可以得到对媒体的控制。你可以调用getControlCompont方法来得到默认的用户控制组件。该方法返回一个AWT组件,你可以将该组件加到你的小应用程序或应用程序的显示容器组件中。 Controller(播放器player或处理器processor)同样可以提供接入到用户控制组件。例如,一个播放器(player)可以同时提供一个可视组件和一个控制面板组件。你可以通过调用播放器的getVisualComponent和getControlPanelComponent方法来得到这些组件。 4.播放(presentation) 在JMF中,播放过程由Controller接口完成。Controller接口定义了基本的状态和控制机制,使得实现它的对象可以对基于时间的媒体(time-based media)进行控制,播放或捕获。Controller接口定义了一个媒体controller经历的不同状态,并提供了一种机制控制这些状态的转换。 Controller注册了许多特定的MediaEvents,来获知它的状态的变化。你必须实现ControllerListener接口,来获得来自于Controller(如播放器Player)的MediaEvents。 JMF API定义了两种Controllers:播放器(Players)和控制器(Processors)。播放器和管理器是用来处理一个特定的数据源,通常建立后不再处理其它媒体数据。 图8为JMF Controllers 本文转自zhangjunhd51CTO博客,原文链接:http://blog.51cto.com/zhangjunhd/25467,如需转载请自行联系原作者

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

Android之RootTools框架简单使用

Android目录结构 data app:用户安装的应用 data:应用的专属文件夹 system:系统的配置信息,注册表文件 anr:anr异常的记录信息 dev:devices的缩写 存放设备所对应的文件 mnt:mount的缩写 挂载在系统上的设备:sdcard,u盘 proc:硬件配置,状态信息 cpuinfo、meminfo sbin:system bin 系统重要的二进制执行文件 adbd:服务器的adb进程 system: app:存放系统应用,默认不能删除 bin:Android中可执行的linux指令文件 etc:host:主机名和ip地址的映射 fonts:Android中自带的字体 framework:存放谷歌提供的java api lib:核心功能的类库,C/C++文件 media/audio:存放Android的音效文件 tts:语音发声引擎,默认不支持中文 usr:用户设备的配置信息,键盘编码和按键编码的映射 xbin:是专为开发人员准备的二进制指令 Android下的Linux指令 su:superuser 切换到超级用户 rm:remove,删除文件 rm 文件名 ls:列出目录下的所有文件和文件夹cd:切换到某个目录 ls -l:查看文件的详细信息 ls -a:查看隐藏文件 cat:查看文件内容 cat 文件名 不要cat二进制可执行文件 mv:move 修改文件名 mv 原文件名 新文件名 mkdir:创建文件夹 mkdir 文件夹名字 rmdir:删除文件夹 rmdir 文件夹名字 touch:创建新文件 touch 文件名 chmod:change mode,切换文件访问权限 chmod 777 文件名 echo:回显数据;重定向数据sleep:睡眠几秒 echo 数据 > 文件名 df:显示指定目录的容量 id:打印当前用户的idps:列出系统中运行的所有进程 uid=0:root uid=1000:system uid=2000:shell uid=10000+:一般应用程序的id kill:杀死指定pid的进程 kill pid chown:change owner,修改拥有者 chown 0.0 文件名 mount:挂载文件系统 mount -o remount rw /:挂载当前目录为可读可写权限 mount -o remount rw /system:重新挂载指定目录 Android中特有的指令 am:ActivityManager,可以进行跟activity相关的操作 am start -n com.itheima.createfile/com.itheima.createfile.MainActivity:开启指定Activity am kill com.itheima.createfile:结束非前台进程 am force-stop com.itheima.createfile:结束进程 pm:PackageManagermonkey -p com.itheima.createfile 1000:自动点击指定应用1000次 pm disable 包名:冻结指定应用 pm enable 包名:解冻指定应用 刷模拟器,rom写文件(su) 如果想让真实手机运行这些指令,手机必须要有root权限 刷root原理:把su二进制文件拷贝到/system/bin或者/system/xbin Android刷root软件,工作的原理全部都是利用系统的漏洞实现 rom:可以理解为android系统的安装文件 把su文件和superuser.apk写入img文件 执行su指令 Runtime.getRuntime().exec("su"); 小案例:冻结解冻应用 冻结和解冻指定的应用 RootTools.sendShell("pmdisable"+package,300000);RootTools.sendShell("pmenable"+package,300000); 小案例:零权限读取用户隐私数据 直接修改短信数据库访问权限 RootTools.sendShell("chmod777data/data/com.android.providers.telephony/databases/mmssms.db",300000); SQLiteDatabasedb=SQLiteDatabase.openDatabase("data/data/com.android.providers.telephony/databases/mmssms.db",null,SQLiteDatabase.OPEN_READONLY); Cursorcursor=db.query("sms",newString[]{"body","address"},null,null,null,null,null); while(cursor.moveToNext()){Stringbody=cursor.getString(0); Stringaddress=cursor.getString(1);System.out.println(body+";"+address);} RootTools.sendShell("chmod660data/data/com.android.providers.telephony/databases/mmssms.db",300000); 静默安装 为什么有静默安装的需求自动下载应用,然后静默安装 正规应用。电子市场,方便用户静默安装 流氓软件。后台偷偷下载安装。 //静默安装RootTools.sendShell("pminstallsdcard/flowstat.apk",30000); //打开RootTools.sendShell("amstart-ncom.jijian.flowstat/com.jijian.flowstat.TrafficWidgetSetting",30000); //卸载应用RootTools.sendShell("pmuninstallcom.jijian.flowstat",30000); //删除下载的apk包RootTools.sendShell("rmsdcard/flowstat.apk",30000); 修改字体 把ttf文件刷进img中 Android系统默认的中文字体为DroidSansFallBack.ttf 用你想使用的字体ttf文件替换掉这个文件即可 修改开机动画 从真机中得到bootanimation.zip 把bootanimation.zip放入system/media目录下 删除锁屏密码 删除data/system下的key文件 文本密码为password.key 手势密码为gesture.key 本文作者:佚名 来源:51CTO

资源下载

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册