首页 文章 精选 留言 我的

精选列表

搜索[AGI开发],共10011篇文章
优秀的个人博客,低调大师

Android应用开发—Application

What is Application Application和Activity,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个application对象,用来存储系统的一些信息。通常我们是不需要指定一个Application的,这时系统会自动帮我们创建,如果需要创建自己的Application,也很简单创建一个类继承 Application并在manifest的application标签中进行注册(只需要给Application标签增加个name属性把自己的 Application的名字定入即可)。 android系统会为每个程序运行时创建一个Application类的对象且仅创建一个,所以Application可以说是单例 (singleton)模式的一个类。且application对象的生命周期是整个程序中最长的,它的生命周期就等于这个程序的生命周期。因为它是全局的单例的,所以在不同的Activity,Service中获得的对象都是同一个对象。所以通过Application来进行一些数据传递,数据共享,数据缓存等操作。 Data passing between components using Application 假如有一个Activity A,跳转到 Activity B,并需要推荐一些数据,通常的作法是Intent.putExtra() 让Intent携带,或者有一个Bundle把信息加入Bundle让Intent推荐Bundle对象,实现传递。但这样作有一个问题在于,Intent和Bundle所能携带的数据类型都是一些基本的数据类型,如果想实现复杂的数据传递就比较麻烦了,通常需要实现 Serializable或者Parcellable接口。这其实是Android的一种IPC数据传递的方法。如果我们的两个Activity在同一个进程当中为什么还要这么麻烦呢,只要把需要传递的对象的引用传递过去就可以了。 基本思路是这样的。在Application中创建一个HashMap,以字符串为索引,Object为value这样我们的HashMap就可以存储任何类型的对象了。在Activity A中把需要传递的对象放入这个HashMap,然后通过Intent或者其它途经再把这人索引的字符串传递给Activity B,Activity B就可以根据这个字符串在HashMap中取出这个对象了。只要再向下转个型 ,就实现了对象的传递。 Data caching in Application 我一般会习惯在application中建立两个HashMap一个用于数据的传递,一个用于缓 存一些数据。比如有一个Activity需要从网站获取一些数据,获取完之后我们就可以把这个数据cache到Application 当中,当页面设置到其它Activity再回来的时候,就可以直接使用缓存好的数据了。但如果需要cache一些大量的数据,最好是cache一些 (软引用)SoftReference ,并把这些数据cache到本地rom上或者sd卡上。如果在application中的缓存不存在,从本地缓存查找,如果本地缓存的数据也不存在再从网 络上获取。 Android Application的作用

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

Eclipse 开发配置

1. Eclipse配置HTML/JS/CSS/JSP页面的自动提示 1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:zjava 点击apply按钮 如图: 图1.png 2.继续打开JavaScript→Editor→Content Assist 修改Auto Activation triggers for javaScript的值为:zjs 点击apply按钮 如图: 图2.png 3.继续打开web→html Files→Editor→Content Assist 修改Prompt when these characters are inserted:的值为:zhtml 点击apply按钮 如图: 图3.png 4.打开File→Export→Genral→Preferences→导出一文件到任意位置,然后用记事本打开此文件 ,Ctrl+F进行查找 图4.png 查找 zjava 然后将其值改为 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW 再查找 zjs 然后将其值改为 .abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW 再查找 zhtml 然后将其值改为 <=.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW 保存文件。 5.打开eclipse→File→Import→Genral→Preferences,导入刚刚编辑的文件后,所有设置完毕. 2. 设置字体颜色 字体:Inconsolata下载 下载下来之后导入到C:\Windows\Fonts目录下。 颜色: 在此基础上进行修改:(这里的数值都是数值 红绿蓝—RGB设置) 1、注释 Annotations : 107 147 186 浅蓝色 2、符号 Brackets : 255 128 0 橙色 3、类名 Classes : 0 80 50 加粗 深绿色 4、常量 Constant : 202 0 202 加粗 玫瑰红 5、弃用的成员 Deprecated members : 123 23 43 中划线 加粗 咖啡色 6、枚举 Enums : 128 0 255 紫色 7、变量 Fields : 128 0 128 深紫色 8、return关键字 Keyword 'return' : 255 0 85 红色 加粗 9、其他关键字 Keyword excluding 'return' : 207 46 125 玫瑰红 加粗 10、方法定义 Method declarations : 255 128 64 橙色加粗 11、方法 Methods : 0 48 96 深蓝 12、数字 Numbers :42 0 255 蓝色 13、运算符 Operators : 255 128 0 橙色 14、其他 Others :78 123 0 绿色 15、静态变量 Static fields : 33 0 189 蓝色 加粗 16、字符串 Strings : 132 26 138 紫色 3. 类似Sublime Text 编辑区皮肤,风格,颜色 1. 第一种:下载Eclipse的颜色主题(Color Themes)插件 2. 第二种:eclipse-ui-theme,下载压缩包, 并解压到dropins文件夹中,然后重启Eclipse,Preferences > General > Appearance 并选择 Dark Juno. 3. 第三种:添加插件 图5.png 4. 第四种:在Eclipse Marketplace中搜索Eclipse Color Theme 图6.png 5. 第五种:离线安装。主题包下载 步骤: 点击Add...按钮 点击local... 切记Contact all update sites during install to find required software选项不要勾选. 重启Eclipse,在window->Preferences->General->Appearance->Color Theme, 选择对应的主题. 4. 修改JSP默认模板 1. window->Preferences->Web->JSP Fils->Editor->Templates. 图7.png 2. 选择后在右侧点击Edit...,将内容修改如下: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> ${cursor} </body> </html> 4. Java Doc模板配置 1). Window->Preferencecs->Java->Code Style->Code Template->Comments. 图8.png 2). 修改Types和Methods内容如下: /** * ${tags} * @author ${user} * @date ${date} ${time} */

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

iOS开发之UIWebView

UIWebView是iOS sdk中一个最常用的控件。是内置的浏览器控件,我们可以用它来浏览网页、打开文档等等。这篇文章我将使用这个控件,做一个简易的浏览器。如下图: 我们创建一个Window-based Application程序命名为:UIWebViewDemo UIWebView的loadRequest可以用来加载一个url地址,它需要一个NSURLRequest参数。我们定义一个方法用来加载url。在UIWebViewDemoViewController中定义下面方法: - (void)loadWebPageWithString:(NSString*)urlString { NSURL *url =[NSURL URLWithString:urlString]; NSLog(urlString); NSURLRequest *request =[NSURLRequest requestWithURL:url]; [webView loadRequest:request]; } 在界面上放置3个控件,一个textfield、一个button、一个uiwebview,布局如下: 在代码中定义相关的控件:webView用于展示网页、textField用于地址栏、activityIndicatorView用于加载的动画、buttonPress用于按钮的点击事件。 @interface UIWebViewDemoViewController :UIViewController<UIWebViewDelegate> { IBOutlet UIWebView *webView; IBOutlet UITextField *textField; UIActivityIndicatorView *activityIndicatorView; } - ( IBAction )buttonPress:( id ) sender; - ( void )loadWebPageWithString:( NSString *)urlString; @end 使用IB关联他们。 设置UIWebView,初始化UIActivityIndicatorView: - (void)viewDidLoad { [super viewDidLoad]; webView.scalesPageToFit =YES; webView.delegate=self; activityIndicatorView = [[UIActivityIndicatorView alloc] initWithFrame : CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)] ; [activityIndicatorView setCenter: self.view.center] ; [activityIndicatorView setActivityIndicatorViewStyle: UIActivityIndicatorViewStyleWhite] ; [self.view addSubview : activityIndicatorView] ; [self buttonPress:nil];// Do any additional setup after loading the view from its nib.} UIWebView主要有下面几个委托方法: 1、- (void)webViewDidStartLoad:(UIWebView *)webView;开始加载的时候执行该方法。 2、- (void)webViewDidFinishLoad:(UIWebView *)webView;加载完成的时候执行该方法。 3、- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;加载出错的时候执行该方法。 我们可以将activityIndicatorView放置到前面两个委托方法中。 - (void)webViewDidStartLoad:(UIWebView *)webView { [activityIndicatorView startAnimating] ; }- (void)webViewDidFinishLoad:(UIWebView *)webView { [activityIndicatorView stopAnimating]; } buttonPress方法很简单,调用我们开始定义好的loadWebPageWithString方法就行了: - ( IBAction )buttonPress:( id ) sender { [textField resignFirstResponder]; [ self loadWebPageWithString:textField.text]; } 当请求页面出现错误的时候,我们给予提示: - ( void )webView:(UIWebView *)webView didFailLoadWithError:( NSError *)error { UIAlertView *alterview = [[UIAlertView alloc] initWithTitle:@ "" message:[error localizedDescription] delegate: nil cancelButtonTitle: nil otherButtonTitles:@ "OK" , nil ]; [alterview show]; [alterview release]; } 总结:本文通过实现一个简单的浏览器,说明了uiwebview的方法和属性,相信通过这个例子,应该明白uiwebview的使用了。 代码:UIWebViewDemo.zip 本文转自麒麟博客园博客,原文链接:http://www.cnblogs.com/zhuqil/archive/2011/07/28/2119923.html,如需转载请自行联系原作者

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

Android应用开发—AsyncTask

摘录自 Android 多线程—–AsyncTask详解 AsyncTask AsyncTask:异步任务,从字面上来说,就是在我们的UI主线程运行的时候,异步的完成一些操作。AsyncTask允许我们的执行一个异步的任务在后台。我们可以将耗时的操作放在异步任务当中来执行,并随时将任务执行的结果返回给我们的UI线程来更新我们的UI控件。通过AsyncTask我们可以轻松的解决多线程之间的通信问题。 怎么来理解AsyncTask呢?通俗一点来说,AsyncTask就相当于Android给我们提供了一个多线程编程的一个框架,其介于Thread和Handler之间,我们如果要定义一个AsyncTask,就需要定义一个类来继承AsyncTask这个抽象类,并实现其唯一的一个 doInBackgroud 抽象方法。要掌握AsyncTask,我们就必须要一个概念,总结起来就是: 3个泛型,4个步骤。 3个泛型指的是什么呢?我们来看看AsyncTask这个抽象类的定义,当我们定义一个类来继承AsyncTask这个类的时候,我们需要为其指定3个泛型参数: AsyncTask <Params, Progress, Result> Params: 这个泛型指定的是我们传递给异步任务执行时的参数的类型 Progress: 这个泛型指定的是我们的异步任务在执行的时候将执行的进度返回给UI线程的参数的类型 Result: 这个泛型指定的异步任务执行完后返回给UI线程的结果的类型 我们在定义一个类继承AsyncTask类的时候,必须要指定好这三个泛型的类型,如果都不指定的话,则都将其写成Void, 例如: AsyncTask <Void, Void, Void> 4个步骤:当我们执行一个异步任务的时候,其需要按照下面的4个步骤分别执行 onPreExecute(): 这个方法是在执行异步任务之前的时候执行,并且是在UI Thread当中执行的,通常我们在这个方法里做一些UI控件的初始化的操作,例如弹出要给ProgressDialog doInBackground(Params… params): 在onPreExecute()方法执行完之后,会马上执行这个方法,这个方法就是来处理异步任务的方法,Android操作系统会在后台的线程池当中开启一个worker thread来执行我们的这个方法,所以这个方法是在worker thread当中执行的,这个方法执行完之后就可以将我们的执行结果发送给我们的最后一个 onPostExecute 方法,在这个方法里,我们可以从网络当中获取数据等一些耗时的操作 onProgressUpdate(Progess… values): 这个方法也是在UI Thread当中执行的,我们在异步任务执行的时候,有时候需要将执行的进度返回给我们的UI界面,例如下载一张网络图片,我们需要时刻显示其下载的进度,就可以使用这个方法来更新我们的进度。这个方法在调用之前,我们需要在 doInBackground 方法中调用一个 publishProgress(Progress) 的方法来将我们的进度时时刻刻传递给 onProgressUpdate 方法来更新 onPostExecute(Result… result): 当我们的异步任务执行完之后,就会将结果返回给这个方法,这个方法也是在UI Thread当中调用的,我们可以将返回的结果显示在UI控件上 为什么我们的AsyncTask抽象类只有一个 doInBackground 的抽象方法呢??原因是,我们如果要做一个异步任务,我们必须要为其开辟一个新的Thread,让其完成一些操作,而在完成这个异步任务时,我可能并不需要弹出要给ProgressDialog,我并不需要随时更新我的ProgressDialog的进度条,我也并不需要将结果更新给我们的UI界面,所以除了 doInBackground 方法之外的三个方法,都不是必须有的,因此我们必须要实现的方法是 doInBackground 方法。

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

Redis 开发

1.8.1.消息订阅与发布 订阅 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $channel = $argv[1]; // channel $redis->subscribe(array('channel'.$channel), 'callback'); function callback($instance, $channelName, $message) { echo $channelName, "==>", $message,PHP_EOL; } 发布 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $channel = $argv[1]; // channel $msg = $argv[2]; // msg $redis->publish('channel'.$channel, $msg); 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

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

Redis 开发

32.8.1.消息订阅与发布 订阅 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $channel = $argv[1]; // channel $redis->subscribe(array('channel'.$channel), 'callback'); function callback($instance, $channelName, $message) { echo $channelName, "==>", $message,PHP_EOL; } 发布 <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379); $channel = $argv[1]; // channel $msg = $argv[2]; // msg $redis->publish('channel'.$channel, $msg); 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

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

Android开发之WebView

感觉在显示信息时,用途还可以的。 只是不知和React Native的应用场合有何分别? package com.tw.flag.ch13_hellowebview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ProgressBar; public class MainActivity extends AppCompatActivity { WebView wv; ProgressBar pb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); wv = (WebView) findViewById(R.id.wv); pb = (ProgressBar)findViewById(R.id.pb); wv.getSettings().setJavaScriptEnabled(true); wv.getSettings().setBuiltInZoomControls(true); wv.invokeZoomPicker(); wv.setWebViewClient(new WebViewClient()); wv.setWebChromeClient(new WebChromeClient(){ public void onProgressChanged(WebView view, int progress) { pb.setProgress(progress); pb.setVisibility(progress < 100 ? View.VISIBLE: View.GONE); } }); wv.loadUrl("https://m.jd.com"); } @Override public void onBackPressed() { if (wv.canGoBack()) { wv.goBack(); return; } super.onBackPressed(); } }

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

NDK开发环境配置

1,新建项目添加C++支持,让Android Studio自动生成相关的配置文件 2,设置生成的.SO库名和相应的平台库 在配置build.gradle文件中,这里的build.gradle是指app模块下的build.gradle,不是整个工程的build.gradle文件。在模块的build.gradle的defaultConfig下加入以下ndk配置: ndk { moduleName" .so库的名字 " ldLibs "log", "z", "m" abiFilters "armeabi", "armeabi-v7a", "x86" } 3,CMakeLists.txt的内容如下 cmake_minimum_required(VERSION 3.4.1) add_library( native-lib //你的.so库名称 SHARED src/main/cpp/native-lib.c //项目中要用到的.c和.cpp文件 ) target_link_libraries(native-lib log android) 4,配置gradle.properties android.useDeprecatedNdk=true 这一句是允许我们在项目中使用过时的NDK版本

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

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部分的功能。

用户登录
用户注册