首页 文章 精选 留言 我的

精选列表

搜索[监督学习],共10000篇文章
优秀的个人博客,低调大师

算法学习--数组

一个数组存放了2n+1个整数,其中有n个数出现了2次,1个数出现了1次,找出出现1次的数是多少? //方法一:借助辅助数组(长度为n+1,元素为一结构体(包含数值和 //个数两个成员))进行计数,但是时间复杂度为O(n*n),空间复杂度为O(n+1) //本来是想把Val定义为结构体的,但由于结构体是值类型,不是引用类型, //添加到List结合中的元素的属性值不能被修改,把List中的一个元素赋给另一个Val,修改Val中的value和num, //List中对应的Val相关的属性值是不会改变的,因为他们是内存中的两个不同单元 //总之:谁叫我C学得不好,用的是C#呢,不然就用C实现了。 public class Val {public int value;//值 public int num;//出现的次数 }public int FindA(int[] A, int n) { List<Val> list = new List<Val>(); Val val ; int j=0;for (int i = 0; i < n ; i++) {while (j < n) {bool isExist = false;for(int k=0;k<list.Count;k++) { if (list[k].value == A[j]) { isExist = true; list[k].num = 2;break; } }if (!isExist) { val = new Val(); val.value = A[j]; val.num = 1; list.Add(val); } j++; } }int result = -1;foreach (Val v in list) {if (v.num == 1) { result = v.value;break; } }return result; }//方法二:借助一个长度为n/2+1的数组B,如果A中的元素不在B中,就存入B中,//如果在B中,存在的那个元素后面所有的元素向前移一个单位,相当于去掉这个在B中存在的元素,//这一进一出的,出现偶数次的都去掉了,只剩下出现奇数次的元素。 public int FindI(int[] A, int n) {int[] B = new int[n / 2 + 1];int k = 0;for (int i = 0; i < n; i++) {bool isExist = false;for (int j = 0; j <= k; j++) {if (A[i] == B[j]) { isExist = true;for (int f = j; f < k - 1; f++) { B[f] = B[f + 1]; } k--;break; } }if (!isExist) { B[k] = A[i]; k++; } }return B[0]; }//方法三:排序。相等的数当然就在一起,单独的那个数就是那个只出现一次的了,哈哈... public int FindS(int[] A, int n) {for (int i = 0; i < n - 1; i++) {for (int j = i + 1; j < n; j++) {if (A[i] > A[j]) {int temp = A[j]; A[j] = A[i]; A[i] = temp; } } }int result = -1;for (int i = 0; i < n; i = i + 2) {if (A[i] != A[i + 1]) { result = A[i];break; } }return result; }//方法四:异或运算(博客园这位帅哥牛) //异或运算 0与任何数异或等于任何数,相等的两个数异或等于0,//也就是两个数对应的二进制位进行异或运算;0^0=0 , 1^0=1 , 0^1=1 , 1^1=0//出现偶数次都完蛋了,就剩下出现奇数次的了 public int FindSpecial(int[] A, int n) {int res = 0;for (int i = 0; i < n; i++) { res = res ^ A[i]; }return res; } 本文转自啊汉博客园博客,原文链接:http://www.cnblogs.com/hlxs/archive/2010/11/16/2087989.html

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

Android开发学习清单

目录: 第1章 Android应用与开发环境 1.1 Android的发展和历史 1.1.1 Android的发展和简介 1.1.2 Android平台架构及特性 1.2 搭建Android开发环境 1.2.1下载和安装Android SDK 1.2.2 安装Eclipse和ADT插件 1.3 Android常用开发工具的用法 1.3.1创建、删除和浏览AVD 1.3.2 使用Android模拟器(Emulator) 1.3.3使用DDMS进行调试android调试输出 1.3.4 Android Debug Bridge(ADB)的用法 1.3.5 使用DX编译Android应用 1.3.6 使用Android Asset Packaging Tool(AAPT)打包资源 1.3.7 使用mksdcard管理虚拟SD卡 1.4 开始第一个Android应用 1.4.1 使用Eclipse开发第一个Android应用 1.4.2 通过ADT运行Android应用 1.5Android应用结构分析 1.5.1 创建一个Android应用 1.5.2 自动生成的R.java 1.5.3 res目录说明 1.5.4 Android应用的清单文件:AndroidManifest.xml 1.5.5应用程序权限说明 1.6 Android应用的基本组件介绍 1.6.1 Activity和View 1.6.2Android中Services简析 1.6.3 BroadcastReceiver 1.6.4 ContentProvider 1.6.5 Intent和IntentFilter 1.7 本章小结 第2章 Android应用的界面编程2.1 界面编程与视图(View)组件 2.1.1 视图组件与容器组件 2.1.2 使用XML布局文件控制UI界面 2.1.3 在代码中控制UI界面 2.1.4 使用XML布局文件和Java代码混合控制UI界面 2.1.5 开发自定义View 2.2 布局管理器 2.2.1线性布局 2.2.2表格布局 2.2.3 帧布局 2.2.4相对布局 2.2.5绝对布局 2.2.6 框架布局 2.2.7layout_weight详解 2.2.8Android中include标签的使用 2.2.9Android LayoutInflater详解2.3 基本界面组件 2.3.1文本框(TextView)与编辑框(EditText)的功能和用法 2.3.1.1TextView显示html文件中的图片 2.3.2按钮(Button)与图片按钮(ImageButton)组件的功能和用法 2.3.3 使用9Patch图片作为按钮背景 2.3.4单选按钮(RadioButton)和复选框(CheckBox)介绍与应用 2.3.5状态开关按钮ToggleButton的功能与用法 2.3.6 时钟(AnalogClock和DigitalClock)的功能与功法 2.3.7图像视图(ImageView)的功能和用法 2.4 高级界面组件 2.4.1自动完成文本框AutoCompleteTextView的功能和用法 2.4.2Spinner的功能和用法 2.4.3日期、时间选择DatePicker、TimePicker的功能和用法 2.4.4进度条ProgressBar的功能和用法 2.4.5拖动条SeekBar的功能和用法 2.4.6 星级评分条(RatingBar) 的功能和用法 2.4.7选项卡TabHost的功能和用法 2.4.8 滚动视图(ScrollView) 的功能和用法 2.4.9列表视图(ListView和ListActivity) 2.4.9.1Android中动态更新ListView(转) 2.4.10 可展开的列表组件(ExpandableListView) 2.4.11网格视图(GridView)和图像切换器(ImageSwitcher)功能和用法 2.4.12画廊视图Gallery的功能和用法 2.5 对话框 2.5.1 使用AlertDialog创建简单对话框 2.5.2 使用AlertDialog创建列表对话框 2.5.3 使用AlertDialog创建自定义对话框 2.5.4 使用PopupWindow 2.5.5 使用DatePickerDialog、TimePickerDialog 2.5.6 使用ProgressDialog创建进度对话框 2.6 消息提示 2.6.1 使用Toast显示提示信息框 2.6.2Notification的功能与用法 2.7 菜单 2.7.1 选项菜单和子菜单(SubMenu) 2.7.2 使用监听器来监听菜单事件 2.7.3 创建复选菜单项和单选菜单项 2.7.4 设置与菜单项关联的Activity 2.7.5 上下文菜单 2.8 本章小结 第3章 事件处理 3.1 Android的事件处理 3.2 基于监听的事件处理 3.2.1 事件监听的处理模型 3.2.2 事件和事件监听器 3.2.3 内部类作为事件监听器类 3.2.4 外部类作为事件监听器类 3.2.5 Activity本身作为事件监听器 3.2.6 匿名内部类作为事件监听器类 3.2.7 直接绑定到标签 3.3 基于回调的事件处理 3.3.1 回调机制与监听机制 3.3.2 基于回调的事件传播 3.3.3 重写onTouchEvent方法响应触摸屏事件 3.4 响应的系统设置的事件 3.4.1 Configuration类简介 3.4.2 重写onConfigurationChanged响应系统设置更改 3.5 Handler消息传递机制 3.5.1 Handler类简介 3.5.2Handler使用案例 3.6 本章小结 第4章 深入理解Activity4.1 建立、配置和使用Activity 4.1.1 建立Activity 4.1.2 配置Activity 4.1.3 启动、关闭Activity 4.1.4使用Bundle在Activity之间交换数据 4.1.5启动其他Activity并返回结果 activity结束之后刷新之前的activity的内容 4.2 Activity的回调机制 4.3 Activity的生命周期 4.3.1 Activity的生命周期演示 4.3.2 Activity与Servlet的相似性与区别 4.4 本章小结 第5章 使用Intent和IntentFilter进行通信5.1 Intent对象详解 5.1.1使用Intent启动系统组件5.2 Intent的属性及intent-filter配置 5.2.1 Component属性 5.2.2 Action、Category属性与intent-filter配置 5.2.3 指定Action、Category调用系统Activity 5.2.4 Data、Type属性与intent-filter配置 5.2.5 Extra属性5.3 使用Intent创建Tab页面 5.4 本章小结 第6章 Android应用的资源6.1 资源的类型及存储方式 6.1.1 资源的类型以及存储方式 6.1.2 使用资源6.2使用字符串、颜色、尺寸资源 6.2.1 颜色值的定义 6.2.2定义字符串、颜色、尺寸资源文件android 中resources管理 6.2.3Android中自定义属性(attrs.xml,TypedArray的使用) 6.2.4Android中关于dip和px以及转换的总结 6.3 数组(Array)资源6.4 使用(Drawable)资源 6.4.1 图片资源 6.4.2 StateListDrawable资源 6.4.3 LayerDrawable资源 6.4.4 ShapeDrawable资源 6.4.5 ClipDrawable资源 6.4.6 AnimationDrawable资源6.5 使用原始XML资源 6.5.1 定义原始XML资源 6.5.2 使用原始XML文件 6.6 使用布局(Layout)资源6.7 使用菜单(Menu)资源 6.7.1 定义菜单资源 6.7.2 使用菜单资源6.8 样式(Style)和主题(Theme)资源 6.8.1样式资源 6.8.2主题资源6.9 属性(Attribute)资源6.10 使用原始资源6.11 国际化和资源自适应 6.11.1 Java国际化的思路 6.11.2 Java支持的语言和国家 6.11.3 完成程序国际化 6.11.4 为Android应用提供国际化资源 6.11.5 国际化Android应用 6.12 本章小结 第7章 图形与图像处理7.1 使用简单图片 7.1.1 使用Drawable对象 7.1.2 Bitmap和BitmapFactory7.2 绘图 7.2.1 Android绘图基础:Canvas、Paint等 7.2.2 Path类 7.2.3 绘制游戏动画7.3 图形特效处理 7.3.1 使用Matrix控制变换 7.3.2 使用drawBitmapMesh扭曲图像 7.3.3 使用Shader填充图形7.4 逐帧(Frame)动画 7.4.1 AnimationDrawable与逐帧动画7.5 补间(Tween)动画 7.5.1 Tween动画与Interpolator 7.5.2 位置、大小、旋转度、透明度改变的补间动画 7.5.3 自定义补间动画7.6 使用SurfaceView实现动画 7.6.1 SurfaceView的绘图机制 7.7 本章小结 第8章 Android的数据存储和IO8.1 使用SharedPreferences 8.1.1 SharedPreferences与Editor简介 8.1.2 SharedPreferences的存储位置和格式 8.1.3 读、写其他应用Shared Preferences8.2 File存储 8.2.1 openFileOutput和open FileInput 8.2.2读写SD卡上的文件8.3SQLite数据库 8.3.1 简介SQLiteDatabase 8.3.2 创建数据库和表 8.3.3 使用SQL语句操作SQLite数据库 8.3.4 使用sqlite3工具 8.3.5 使用特定方法操作SQLite数据库 8.3.6 事务 8.3.7 SQLiteOpenHelper类8.4 手势(Gesture) 8.4.1 手势检测 8.4.2 增加手势 8.4.3 识别用户的手势8.5 自动朗读(TTS) 8.6 本章小结 第9章 使用ContentProvider实现数据共享 9.1 数据共享标准:ContentProvider简介 9.1.1 ContentProvider简介 9.1.2 Uri简介 9.1.3 使用ContentResolver操作数据 9.2 操作系统的ContentProvider 9.2.1 使用ContentProvider管理联系人 9.2.2 使用ContentProvider管理多媒体内容 9.3 实现ContentProvider 9.3.1 创建ContentProvider的步骤 9.4 监听ContentProvider的数据改变 9.4.1 ContentObserver简介 9.5 本章小结 第10章 Service与BroadcastReceiver10.1 Service简介 10.1.1 创建、配置Service 10.1.2 启动和停止Service 10.1.3绑定本地Service并与之通信 10.1.4 Service的生命周期10.2 跨进程调用Service(AIDL服务) 10.2.1 AIDL服务简介 10.2.2 创建AIDL文件 10.2.3 将接口暴露给客户端 10.2.4 客户端访问AIDLService 10.2.5Android中Services之异步IntentService 10.3 电话管理器(TelephonyManager)Android监听来电和去电 10.4 短信管理器(SmsManager) 10.5 音频管理器(AudioManager) 10.5.1 AudioManager简介10.6 振动器(Vibrator) 10.6.1 Vibrator简介 10.6.2 使用Vibrator控制手机振动10.7 手机闹钟服务(AlarmManager) 10.7.1 AlarmManager简介 10.7.2 设置闹钟10.8 接收广播消息 10.8.1BroadcastReceiver简介 10.8.2 发送广播 10.8.3 有序广播10.9 接收系统广播消息 10.10在Android中实现service动态更新UI界面 第11章 多媒体应用开发 11.1 音频和视频的播放 11.1.1 使用MediaPlayer播放音频 11.1.2 使用SoundPool播放音效 11.1.3 使用VideoView播放视频 11.1.4 使用MediaPlayer和SurfaceView播放视频 11.2 使用MediaRecorder录制音频 11.3 控制摄像头拍照 11.3.1 通过Camera进行拍照 11.3.2 录制视频短片 11.4 本章小结 第12章 OpenGL与3D应用开发 12.1 3D图像与3D开发的基本知识 12.2 OpenGL和OpenGL ES简介 12.3 绘制2D图形 12.3.1 在Android应用中使用OpenGL ES 12.3.2 绘制平面上的多边形 12.3.3 旋转 12.4 绘制3D图形 12.4.1 构建3D图形 12.4.2 应用纹理贴图 12.5 本章小结 第13章 Android的网络应用13.1 基于TCP协议的网络通信 13.1.1 TCP协议基础 13.1.2 使用ServerSocket创建TCP服务器端 13.1.3 使用Socket进行通信 13.1.4 加入多线程 13.1.5Android的UI设计与后台线程交互 13.1.6使用AsyncTask异步更新UI界面及原理分析 13.1.7实例演示Android异步加载图片 13.1.8AsyncTask和Handler对比(转) 13.2 使用URL访问网络资源 13.2.1 使用URL读取网络资源 13.2.2 使用URLConnection提交请求13.3 使用HTTP访问网络 13.3.1 使用HttpURLConnection 13.3.2 使用Apache HttpClient13.4 使用WebView视图显示网页 13.4.1 使用WebView浏览网页 13.4.2 使用WebView加载HTML代码 13.5 使用Web Service进行网络编程13.5.1 Web Service简介 13.5.2 Web Service平台概述 13.5.3使用Android应用调用Web Service 常见问题及解决方法: Eclipse JAVA文件注释乱码 Android SDK Manager无法更新的解决 android 项目中出现红色感叹号的解决方法 Eclipse快捷键大全(转载) 设置Android程序图标 eclipse中关联文件设置方法 Android在对Sdcard进行文件的读写操作的时候报错FileNotFoundException No resource identifier found for attribute 'showAsAction' in package 'android' Android SlidingMenu 仿网易新闻客户端布局 没有R.java问题找不到getActionBar()方法 Android 2.x中使用actionbar - Actionbarsherlock Android 2.x中使用actionbar - Actionbarsherlock (2) android布局文件中android:icon="?attr/menuIconCamera"找不到对应图标路径 Cannot override the final method from SherlockFragmentActivity 移植SlidingMenu Android library,和安装example出现的问题解决 android防止内存溢出浅析 Android系统目录介绍 ImageView的scaletype属性 Android中TextView setText int 报错 本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/3608882.html如需转载请自行联系原作者 欢醉

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

Android UI学习 - Menu

Android系统里面有3种类型的菜单:options menu,context menu,sub menu。 options menu 按Menu键就会显示,用于当前的Activity。 它包括两种菜单项: 因为options menu在屏幕底部最多只能显示6个菜单项,这些菜单项称为 icon menu,icon menu只支持文字(title) 以及icon,可以设置快捷键,不支持checkbox以及radio控件,所以不能设置checkable选项。 而多于6的菜单项会以“more” icon menu来调出,称为 expanded menu。它不支持icon,其他的特性都和icon menu一样! 在Activity里面,一般通过以下函数来使用options menu: Activity::onCreateOptionsMenu (Menu menu) 创建options menu,这个函数只会在menu第一次显示时调用。 Activity::onPrepareOptionsMenu (Menu menu)更新改变options menu的内容,这个函数会在menu每次显示时调用。 Activity::onOptionsItemSelected (MenuItem item)处理选中的菜单项。 context menu 要在相应的view上按几秒后才显示的,用于view,跟某个具体的view绑定在一起。 这类型的菜单不支持icon和快捷键! 在Activity里面,一般通过以下函数来使用context menu: Activity::registerForContextMenu(View view)为某个view注册context menu,一般在Activity::onCreate里面调用。 Activity::onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)创建context menu,和options menu不同,context meun每次显示时都会调用这个函数。 Activity::onContextItemSelected(MenuItem item)处理选中的菜单项。 sub menu 以上两种menu都可以加入子菜单,但子菜单不能嵌套子菜单,这意味着在Android系统,菜单只有两层,设计时需要注意的!同时子菜单不支持icon。 xml形式的menu定义及应用 上述的三种类型的menu都能够定义为xml资源,但需要手动地使用 MenuInflater来得到Menu对象的引用。 一个菜单,对应一个xml文件,因为要求只能有一个根节点<menu>。官方说<?xml>声明可以不写,但我觉得还是写上好些,很多时候那个<?xml>声明主要是为了声明编码格式utf-8之类的。xml文件保存为res/menu/some_file.xml。Java代码引用资源: R.menu.some_file 接下来介绍相关的节点和属性(所有的属性都定义为android空间内,例如android:icon="@drawable/icon"): <menu>根节点,没有属性。 <group>表示在它里面的<item>在同一group。相关属性包括: id:group id menuCategory:对应常量Menu CATEGORY_* — 定义了一组的优先权,有 效值:container,system,secondary,和alternative orderInCategory:定义这组菜单在菜单中的默认次序,int值 checkableBehavior:这组菜单项是否checkable。有效值:none,all(单选/单选按钮radio button),single(非单选/复选类型checkboxes) visible:这组菜单是否可见 true or false enabled:这组菜单是否可用,true or false <item> 菜单项,可以嵌入<menu>作为子菜单。相关属性包括: id: item id menuCategory: 用来定义menu类别 orderInCategory: 用来定义次序,与一个组在一起(Used to define the order of the item, within a group ) title: 标题 titleCondensed:标题摘要, 当原标题太长的时候,需要用简短的字符串来代替title icon: icon 图标 alphabeticShortcut: 字母快捷键 numericShortcut:数学快捷键 checkable:是否为checkbox, true or false checked:是否设置为checked状态,true or false visible: 是否可见, true or false enabled:是否可用,true or false xml示例: <?xmlversion="1.0"encoding="utf-8"?> <menuxmlns:android="http://schemas.android.com/apk/res/android"> <itemandroid:id="@+id/item1" android:title="Item1" android:icon="@drawable/icon" android:checkable="true" android:checked="false" /> <groupandroid:id="@+id/group_1" android:checkableBehavior="single"> <itemandroid:id="@+id/group_item1" android:title="Item1ingroup" /> <itemandroid:id="@+id/group_item2" android:title="Item2ingroup" android:checked="true" /> </group> <itemandroid:id="@+id/submenu" android:title="SubMenu"> <menu> <itemandroid:id="@+id/submenu_item" android:title="SubMenuItem" /> </menu> </item> <itemandroid:id="@+id/item3" android:title="item3" android:checkable="true" android:checked="true" /> </menu> Java代码 publicvoidonCreate(BundlesavedInstanceState){ ... registerForContextMenu(editText); } @Override publicvoidonCreateContextMenu(ContextMenumenu,Viewv, ContextMenuInfomenuInfo){ super.onCreateContextMenu(menu,v,menuInfo); getMenuInflater().inflate(R.menu.menu1,menu); } 效果图 由于这是contextMenu,所以可以看到即使xml定义里面的item1.seticon了,但还是没有显示出来的,即那语句是无效的! 另外,要明确的是,要显示radio,需要用group,而group里面的item设置了checked = true即选中。而checkable和checked的区别,一开始我是很困惑的,但写了代码并运行后,明白它们的区别了: checkable=true表示这个item是checkbox, checked则表示是否选中。所以对于checkbox item,最好先写 checkable="true",然后再写checked。 Java实现 用Java来实现以上的效果图,就比较麻烦些: privatestaticfinalintMENU_GROUPITEM1=Menu.FIRST+8; privatestaticfinalintMENU_GROUPITEM2=Menu.FIRST+9; privatestaticfinalintMENU_ITEM1=Menu.FIRST+10; publicvoidonCreate(BundlesavedInstanceState){ ... registerForContextMenu(findViewById(R.id.edittext)); } @Override publicvoidonCreateContextMenu(ContextMenumenu,Viewv, ContextMenuInfomenuInfo){ super.onCreateContextMenu(menu,v,menuInfo); menu.add(1,MENU_ITEM1,Menu.NONE,"Item1").setCheckable(true).setChecked(false); //GroupID intgroupId=0; //Theorderpositionoftheitem intmenuItemOrder=Menu.NONE; menu.add(groupId,MENU_GROUPITEM1,menuItemOrder,"Item1ingroup"); menu.add(groupId,MENU_GROUPITEM2,menuItemOrder,"Item2ingroup") .setChecked(true); menu.setGroupCheckable(groupId,true,true);//这句要写在groupitem的最后 SubMenusubMenu=menu.addSubMenu("SubMenu1"); subMenu.add("SubMenuItem") .setOnMenuItemClickListener(newMenuItem.OnMenuItemClickListener(){ @Override publicbooleanonMenuItemClick(MenuItemitem){ Toast.makeText(HelloDemo.this, "SubMenuItemselected", Toast.LENGTH_SHORT).show(); returntrue;//true表示完成当前item的click处理,不再传递到父类处理 } }); menu.add("Item3").setCheckable(true).setChecked(true); } 在编写过程中,发现groupId的影响很大,不推荐使用Menu.add(int titleRes)和add(CharSequence title)方法来添加MenuItem,因为没有指定groupID,默认为0,这样子和后面的menu group 一组了,导致执行完 menu.setGroupCheckable(groupId,true,true)后同一group的Item都变成radio。 OptionsMenu的Java实现 @Override publicbooleanonCreateOptionsMenu(Menumenu){ //GroupID intgroupId=0; //Theorderpositionoftheitem intmenuItemOrder=Menu.NONE; menu.add(groupId,MENU_COPY,menuItemOrder,"Copy") .setIcon(R.drawable.icon); menu.add(groupId,MENU_EDIT,menuItemOrder,"Edit"); menu.add(groupId,MENU_PASTE,menuItemOrder,"Paste"); menu.add(groupId,MENU_DELETE,menuItemOrder,"Delete"); menu.add(groupId,MENU_OK,menuItemOrder,"Ok"); menu.add(groupId,MENU_CANCEL,menuItemOrder,"Cancel"); menu.add(groupId,MENU_TEST,menuItemOrder,"Test"); menu.add(groupId,MENU_DEMO,menuItemOrder,"Demo"); //.setIcon(R.drawable.icon);moreexpandmenu不支持icon,setIcon不会报错,但运行时还是看不到icon的 //returnsuper.onCreateOptionsMenu(menu); returntrue;//true表示要显示menu;false表示不显示menu } 处理菜单点击事件 方法一: 利用菜单自带的监听器功能,直接监听,就象处理控件事件一样,像上面的ContextMenu的 subMenu.add("SubMenuItem")设置MenuItem.OnMenuItemClickListener。 方法二: 在Activity和View都直接提供了一个菜单点击统一处理函数, Activity::onOptionsItemSelected (MenuItem item); Activity::onContextItemSelected(MenuItem item) ; @Override publicbooleanonOptionsItemSelected(MenuItemitem){ switch(item.getItemId()){ caseMENU_COPY: Toast.makeText(this,"CopyItemselected",Toast.LENGTH_SHORT).show(); break; default:break; } returnfalse;//false表示继续传递到父类处理 } 效果图 动态菜单 对于OptionsMenu,一般可以使用onPrepareOptionsMenu来改变。 另外,使用函数 android.view.Menu.addIntentOptions(int groupId,int itemId,int order,ComponentName caller, Intent[] specifics, Intent intent,int flags,MenuItem[] outSpecificItems) Specifics 以action+uri的具体方式来增加激活相应activity的菜单项 Intent 以categroy+uri这种一般形式来增加激活相应activity的菜单项 参数Intent和Specifics的区别是,一个用categroy+uri来匹配activity,一个用action+uri来匹配activity。 //按Action查找 Intent[] specifics = new Intent[1]; specifics[0] = new Intent(Intent.ACTION_EDIT, uri); //按Category查找,Action设为null Intent intent = new Intent(null, uri); intent.addCategory(Intent.CATEGORY_ALTERNATIVE); MenuItem[] items = new MenuItem[1]; menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items); 有关Menu的创建可以参考官方的 http://androidappdocs.appspot.com/guide/topics/ui/menus.html。另外官方提供了Menu Design Guidelines http://androidappdocs.appspot.com/guide/practices/ui_guidelines/menu_design.html 本文转自 Icansoft 51CTO博客,原文链接:http://blog.51cto.com/android/306424

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

Android UI学习 - TableLayout

TableLayout和我们平时在网页上见到的Table有所不同,TableLayout没有边框的,它是由多个TableRow对象组成,每个TableRow可以有0个或多个单元格,每个单元格就是一个View。这些TableRow,单元格不能设置layout_width,宽度默认是fill_parent的,只有高度layout_height可以自定义,默认是wrap_content。 单元格可以为empty,并且通过android:layout_column可以设置index值实现跳开某些单元格。在TableRow之间,添加View,设置layout_height以及背景色,就可以实现一条间隔线。android:layout_span可以设置合并几个单元格: <?xmlversion="1.0"encoding="utf-8"?> <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow> <TextView android:text="column1" android:padding="3dip"/> <TextView android:text="column2" android:padding="3dip"/> <TextView android:text="column3" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="column11" android:visibility="invisible"/>//cell不见了 <TextView android:text="左边的invisible" android:gravity="right" android:padding="3dip"/> <Button android:id="@+id/go" android:text="go" android:padding="3dip"/> <Button android:text="cancel" android:padding="3dip"/> </TableRow> <View//间隔线 android:layout_height="2dip" android:background="#F00"/> <TableRow> <TextView android:text="右边的cellempty"/> <TextView android:layout_column="2" android:text="跳开emptycell" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="合并3个单元格" android:layout_span="3" android:gravity="center_horizontal" android:background="#FFC0C0C0" android:textColor="#f00" android:padding="3dip"/> </TableRow> </TableLayout> 没有设置收缩/伸展效果 注意,原来没有添加 android:padding="3dip" 的,发现那些column会凑在一起的,没有空白间隔!明显看到,那个cancel按钮被挤到几乎看不见了!这时候需要使用android:shrinkColumns="可收缩的column",android:stretchColumns="可伸展的column"。 android:shrinkColumns和android:stretchColumns的值都是以0开始的index,但必须是string值,即用"1,2,5"来表示。可以用"*"来表示all columns。而且同一column可以同时设置为shrinkable和stretchable。 如果使用TableLayout类的 setColumnShrinkable/setColumnStretchable (int columnIndex, boolean isShrinkable)就麻烦些了,需要一个一个column来设置。也可以使用TableLayout的 setShrinkAllColumns/setStretchAllColumns来设置all columns。 判断这些column是否shrinkable或stretchable,可以调用 isColumnShrinkable/isColumnStretchable(int columnIndex),isShrinkAllColumns()/isStretchAllColumns()。 <?xmlversion="1.0"encoding="utf-8"?> <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:shrinkColumns="0">//设置第一个column可收缩 <TableRow> <TextView android:text="column1" android:padding="3dip"/> <TextView android:text="column2" android:padding="3dip"/> <TextView android:text="column3" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="column11" android:visibility="invisible"/> <TextView android:text="左边的invisible" android:gravity="right" android:padding="3dip"/> <Button android:id="@+id/go2" android:text="go2" android:padding="3dip"/> <Button android:text="cancel" android:padding="3dip"/> </TableRow> <View android:layout_height="2dip" android:background="#F00"/> <TableRow> <TextView android:text="右边的cellempty"/> <TextView android:layout_column="2" android:text="跳开emptycell" android:padding="3dip"/> <TextView android:text="123456789" android:padding="3dip"/> </TableRow> </TableLayout> 可收缩column效果 现在可以看到第一个column为了让第4个column完整显示,而收缩得内容分为几行显示! 而 可伸展column的效果就是在其他column可以完整显示时,该column就会伸展,占最多空间: <?xmlversion="1.0"encoding="utf-8"?> <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1">//设置第二个column可伸展 <TableRow> <TextView android:text="column1" android:padding="3dip"/> <TextView android:text="column2" android:gravity="right" android:padding="3dip"/> <TextView android:text="column3" android:padding="3dip"/> </TableRow> <TableRow> <TextView android:text="column1" android:padding="3dip"/> <TextView android:text="column2" android:gravity="right" android:padding="3dip"/> <TextView android:text="column3" android:padding="3dip"/> </TableRow> </TableLayout> 可伸展column效果 而动态隐藏column,可以调用TableLayout.setColumnCollapsed (int columnIndex, boolean isCollapsed)来指定相应的column。另外TableLayout类的boolean isColumnCollapsed (int columnIndex)能够判断指定的column是否隐藏。 TableLayout可以用来做网页上的Form显示效果,看看官方的sample: <?xmlversion="1.0"encoding="utf-8"?> <TableLayoutxmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:stretchColumns="1"> <TableRow> <TextView android:text="@string/table_layout_10_user" android:textStyle="bold" android:gravity="right" android:padding="3dip"/> <EditTextandroid:id="@+id/username" android:text="@string/table_layout_10_username_text" android:padding="3dip" android:scrollHorizontally="true"/> </TableRow> <TableRow> <TextView android:text="@string/table_layout_10_password" android:textStyle="bold" android:gravity="right" android:padding="3dip"/> <EditTextandroid:id="@+id/password" android:text="@string/table_layout_10_password_text" android:password="true" android:padding="3dip" android:scrollHorizontally="true"/> </TableRow> <TableRow android:gravity="right"> <Buttonandroid:id="@+id/cancel" android:text="@string/table_layout_10_cancel"/> <Buttonandroid:id="@+id/login" android:text="@string/table_layout_10_login"/> </TableRow> </TableLayout> Form效果 本文转自 Icansoft 51CTO博客,原文链接:http://blog.51cto.com/android/314262

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

springcloud 学习-eureka搭建

组件名:Netflix Eureka 作用:支撑微服务的自注册、自发现,提供负载均衡能力 开发环境使用IDEA,jdk1.8 一、搭建eureka服务 1.新建maven项目,配置pom.xml文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Camden.SR7</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> 2.新建启动类 1 2 3 4 5 6 7 @SpringBootApplication @EnableEurekaServer public class Application{ public static void main(String[]args){ SpringApplication.run(Application. class ,args); } } 3.新建配置文件application.yml 1 2 3 4 5 6 7 8 9 10 11 server: port: 1000 eureka: instance: hostname:localhost client: register-with-eureka: false fetch-registry: false spring: application: name:eureka-server 4.启动(启动类) 5.访问 eureka:http://localhost:1000/ erueka服务器启动成功,目前还未有服务注册 二、搭建服务提供方 1.新建maven项目,配置pom.xml文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Camden.SR7</version> </parent> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> </dependencies> 2.创建Application启动类,提供/hello服务 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 @Configuration @ComponentScan @EnableEurekaClient @EnableAutoConfiguration @RestController public class Application{ @RequestMapping (value= "hello" ,method=RequestMethod.GET) public Stringhello(){ return "你好,世界" ; } public static void main(String[]args){ new SpringApplicationBuilder(Application. class ).web( true ) .run(args); } } 3、新建application.yml配置文件 1 2 3 4 5 6 7 8 9 eureka: client: serviceUrl: defaultZone:http: //localhost:1000/eureka/ spring: application: name:feign-client-test- 001 server: port: 2000 查看路径id展示,需要添加配置 1 2 3 4 5 6 eureka: client: serviceUrl: defaultZone:http: //admin:admin123@localhost:1000/eureka instance: prefer-ip-address: true 4、运行,查看之前Erueka服务端的页面,FEIGN-CLIENT-TEST-001在注册中心变为了大写这个注意下 5、访问:http://127.0.0.1:2000/hello 三、搭建服务消费方 使用@FeignClient注解 Feignis a declarative web service client. It makes writing web service clients easier. 如上是Spring Cloud文档中对于Feign的定义,结合之前的两篇博文,在这里我们就可以吧Feign简单的理解为用户(前端)可以直接接触到的REST接口提供者。在Feign中,我们可以方便的访问和使用意已经在Erueka服务器中注册过的服务了。 1、建立maven工程,配置pom.xml文件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version> 1.5 . 2 .RELEASE</version> <relativePath/><!--lookupparentfromrepository--> </parent> <properties> <project.build.sourceEncoding>UTF- 8 </project.build.sourceEncoding> <project.reporting.outputEncoding>UTF- 8 </project.reporting.outputEncoding> <java.version> 1.8 </java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-feign</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Camden.SR6</version> <type>pom</type> <scope> import </scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 2、建立包及启动类FeignApplication 1 2 3 4 5 6 7 8 9 10 11 12 13 14 /** *Createdbygaofengon2017/7/14. */ @Configuration @ComponentScan @EnableAutoConfiguration @EnableEurekaClient @EnableFeignClients @SpringBootApplication public class FeignApplication{ public static void main(String[]args){ SpringApplication.run(FeignApplication. class ,args); } } 3、建立接口类,用来调用上文中FEIGN-CLIENT-TEST-001服务的方法hello(),FEIGN-CLIENT-TEST-001是全大写的 1 2 3 4 5 @FeignClient ( "FEIGN-CLIENT-TEST-001" ) public interface IHello{ @RequestMapping (value= "/hello" ,method=RequestMethod.GET) Stringhello(); } 其中@FeignClient中指定需要调用的微服务的名称(全大写),@RequestMapping中指定访问微服务响应接口的路径,如之前微服务的hello方法是通过"/hello"路径访问,那么这里需要配置一致 4、新建Controller类,为前端提供REST接口 1 2 3 4 5 6 7 8 9 @RestController public class HelloController{ @Autowired private IHelloiHello; @RequestMapping (value= "gethello" ,method=RequestMethod.GET) public StringgetHello(){ return iHello.hello(); } } 5、配置Feign的配置文件,指定Eureka服务器注册地址和访问端口application.yml 1 2 3 4 5 6 7 8 9 server: port: 8081 eureka: client: serviceUrl: defaultZone:http: //localhost:1000/eureka/ spring: application: name:feign-client-test- 002 6、运行,查看之前Erueka服务端的页面 7、访问:http://127.0.0.1:8081/gethello 这里访问的就是feign-client-test-001的hello服务。 本文转自gaofeng36599 51CTO博客,原文链接:http://blog.51cto.com/786678398/1947471

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

docker容器学习二

Docker 架构 Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。 Docker 容器通过 Docker 镜像来创建。 容器与镜像的关系类似于面向对象编程中的对象与类。 Docker 面向对象 容器 对象 镜像 类 Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板。 Docker 容器(Container) 容器是独立运行的一个或一组应用。 Docker 客户端(Client) Docker 客户端通过命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 与 Docker 的守护进程通信。 Docker 主机(Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 Docker 仓库(Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。 Docker Machine Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。 本文转自去轻狂书生51CTO博客,原文链接:http://blog.51cto.com/8999a/1966961,如需转载请自行联系原作者

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

iOS开发学习笔记

1常用的第三方工具 1.1 iPhone Simulator 测试程序需要模拟器iPhone Simulator 1.2 设计界面需要Interface Builder,Interface Builder(IB)中将视图拖拽到窗口上并将各种视图连接到插座变量和动作上, 这样它们就能以编程方式与代码交互。IB使用Nib文件储存GUI资源,同时适用于Cocoa和Carbon程序。在需要的时候,Nib文件可以被快速地载入内存。 2iOS的常用开发框架 2.1 Foundation框架,该框架允许使用一些基本对象,如数字和字符串,以及一些对象集合,如数组、字典和集合,还有其他功能,包括处理日期和时间、自动化的 内存管理、处理基础文件系统、存储(或归档)对象、处理集合数据结构(如点和长方形)等。 2.2 Cocoa框架,术语Cocoa(适合开发桌面应用程序)是指Foundation框架和Application Kit框架(窗口、按钮、列表等能够开发交互式图形应用程序)。术语Cocoa Touch(适合iPhone和iTouch的应用程序开发)是指Foundation框架和UIKit框架。 3iOS程序框架 3.1 典型的iOS程序包含一个Window(窗口)和几个UIViewController(视图控制器),每个UIViewController可以管理多高UIView(在iPhone里看到的、摸到的都是UIView, 可能是UITableView、UIWebView、UIImageView等)。这些UIView之间如何进行层次叠放、显示、隐藏、旋转、移动等都由UIViewController进行管理,而 UIViewcontroller之间的切换,通常情况是通过UINavigationController(当程序具有层次化的工作流时,比较适合)、UITabBarController(当应用程序需要分为几个 相对比较独立的部分时,比较适合,比如tab)或UISplitViewController(适合用于“主-从”界面的情况,比如左菜单,右明细)进行。 4MVC 4.1 MVC的处理过程:首先控制器接收用户的请求,并决定应该调用哪个模型来进行处理;然后模型用业务逻辑来处理用户的请求并返回数据;最后控制器用相应的视图格式化 模型返回的数据,并通过表示层呈现给用户。 5创建并连接输出口和操作 在Assistant Edit模式下,将视图控件拖拽到包含控件ViewController.h的代码编辑器中,当鼠标位于@interface行下时松开。 创建IBOutlet,是指输出口,用于实例变量/属性; 创建IBAction,是指操作,用于事件。 本文转自SharkBin博客园博客,原文链接:http://www.cnblogs.com/SharkBin/p/5268086.html,如需转载请自行联系原作者

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

SWIFT学习笔记01

1、Swift。用来推断option是不是nil,相当于OC的 if(option) if let name = option{ greeting = “if=====“ }else{ greeting = "else===" } 2、执行switch中匹配到的子句之后。程序会退出switch语句,并不会继续向下执行,所以不须要在每一个子句结尾写break。 3、//使用..创建的范围不包括上界,假设想包括的话须要使用...,集合上,就是[)与[]的关系 for i in 0..3{ println("i===\(i)")//仅仅经历0,1,2三次循环 } 4、//传入数组參数 func sumOf(numbers:Int...) -> Int{ var sum = 0 for number in numbers{ sum += number } return sum } 5、//函数嵌套,函数里面定义并使用函数 func returnFifteen() -> Int{ var y = 10 func add(){ y+=5 } add() return y } 6、处理变量的可选值时。你能够在操作(比方方法、属性和子脚本)之前加? 。假设?之前的值是nil,? 后面的东西都会被忽略。而且整个表达式返回nil。否则,?之后的东西都会被执行。 本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5180947.html,如需转载请自行联系原作者

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

学习笔记 十六 : Docker

一 docker简介 docker是一个轻量级的,运行在用户内核的一组进程,与主机系统想隔离。它有自己的进程,文件系统和其它资源,它可以和其它主机共享物理主机内核。 二 安装配置 yum install docker systemctl start docker systemctl enable docker docker pull registry.access.redhat.com/redhat/rhel7 docker load -i rhel-server-docker-7.0.tar.gz docker images docker run -i -t --rm rhel7 cat /etc/hosts docker ps -a docker start -ai silly_fermi3 2.创建docker镜像 docker run -i rhel7 bash -c "yum install -y httpd;" docker ps -l docker commit -m "RHEL7+httpd" dreamy_goodall1 rhel_httpd docker images docker run -p 8080:80 -d rhel_httpd /usr/sbin/httpd -DFOREGROUND yum install docker-registry systemctl start docker-registry systemctl enable docker-registry firewall-cmd --add-port=5000/tcp firewall-cmd --add-port=5000/tcp --permanent docker tag rhel_httpd registry.example.com:5000/usr/httpd docker push registry.example.com:5000/user/httpd 三 案例 3.1 docker 私有仓库搭建 3.2 docker 发布一个web应用 3.3 docker 发布一个mysql服务 3.4 docker高可用 本文转自 woshiwei201 51CTO博客,原文链接:http://blog.51cto.com/chenwei/1841979

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

JAVA学习资料汇总

1、尚学堂JAVA视频 http://www.bjsxt.com/shipinxiazai/ 2、《魔乐MLDN3G版Java核心课程》(3Gjava视频) http://www.verycd.com/topics/2907692/ 3、《尚学堂科技.马士兵.JAVA视频教程(java培训内部视频) http://www.verycd.com/topics/93279/ 4、《动力节点Java培训视频》 http://www.verycd.com/topics/2758880/ 5、《魔乐MLDN李兴华教你Android开发实战》 http://www.verycd.com/topics/2898607/ 6、JAVA书籍http://pan.baidu.com/share/link?shareid=2269339491&uk=2033258291 7、JAVA工具集 http://pan.baidu.com/share/link?shareid=2118490812&uk=2033258291 本文转自dllglvzhenfeng51CTO博客,原文链接:http://blog.51cto.com/1443208/1277305,如需转载请自行联系原作者

资源下载

更多资源
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文件系统,支持十年生命周期更新。

WebStorm

WebStorm

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

用户登录
用户注册