- 博客(106)
- 资源 (7)
- 收藏
- 关注
原创 httpServletRequest.setCharacterEncoding 、httpServletResponse.setCharacterEncoding详解
一、httpServletRequest.setCharacterEncoding():用来确保发往服务器的参数以汉字的编码来提取,设置从request中取得的值或从数据库中取出的值。如果没有提前指定,则会按照服务器端默认的“iso-8859-1”来进行编码;指定后可以通过request.getParameter()获取自己想要的字符串;该方法只对post请求有效,
2017-03-17 19:10:53
3270
原创 Java NIO(六)--ServerSocketChannel与SocketChannel
一、SocketChanel1、创建SocketChannel有两种方法可以获取一个SocketChannel实例 1. 通过静态方法open打开一个SocketChannel socketChannel = SocketChannel.open();ServerSocketChannel接受一个连接请求后等到SocketChannel socketChannel = se
2017-03-13 15:26:50
2027
原创 Java NIO(五)--Selector
一、概述selector,选择器,同过一个选择器,程序可以通过一个线程处理多个channel,仅用单个线程来处理多个Channels的好处是,只需要更少的线程来处理通道。事实上,可以只用一个线程处理所有的通道,这样会大量的减少线程之间上下文切换的开销。selector基于事件驱动的方式处理多个通道I/O。二、Selector、SelectableChannel和Select
2017-03-13 15:02:56
784
原创 Java NIO(四)--FileChannel
一、概述NIO 中FileChannel可以理解为一个连接到文件的通道,可以通过FileChannel对文件进行读写; FileChannel没有非阻塞模式,读写都只有阻塞的方式;二、操作打开FileChannel 在使用FileChannel之前,必须先打开它。但是,我们无法直接打开一个FileChannel,需要通过使用一个InputStream、OutputS
2017-03-07 13:16:38
579
原创 Java NIO (三)-分散(Scatter)/聚集(Gather)
分散和聚集 I/O 是使用多个(数组)而不是单个缓冲区进行数据读/写; 分散(Scatter)从通道中读取数据时写入多个缓冲区中,通道将数据“分散”到多个缓冲区中; 聚集(Gather)写入通道时将多个缓冲区的数据写入同一个通道,通道将多个缓冲区数据“聚集”到一起;scatter / gather经常用于需要将传输的数据分开处理的场合,例如传输一个由消息头和消息体组成的消息
2017-03-07 11:50:49
1040
原创 Java NIO (二)--Buffer
Buffer的基本用法 使用Buffer读写数据一般遵循以下四个步骤: 写入数据到Buffer调用flip()方法从Buffer中读取数据调用clear()方法或者compact()方法当向buffer写入数据时,Buffer会记录下写了多少数据。一旦要读取数据,需要通过flip()方法将Buffer从写模式切换到读模式。在读模式下,可以读取之前写入到Buffer的所有数据。
2017-03-07 11:39:45
712
原创 Java NIO (一)--简介
一、简介Java NIO (New IO)是JDK1.4后引入的新输入/输出API,提供基于缓冲区(buffer)的块写入/读取,而以前的I/O是基于流(Stream)的方式,NIO基于块的IO操作,将最耗时的缓存区读取和填充交由底层操作系统实现,因此速度上要快得多;主要由以下三个核心部分组成: 1.Channel2. Buffer 3. Selector二、Channel
2017-03-07 11:06:46
5190
转载 40个比较重要的Android面试题
1、 Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和
2017-03-07 09:07:23
670
转载 8个SQL语句常用优化技巧
要提高SQL语句的执行效率,最常见的方法就是建立索引,以及尽量避免全表扫描。在本章MySQL教程中,UncleToo给大家整理一些常见的SQL优化技巧,避免全表扫描。一个简单的优化,也许能让你的SQL执行效率提高几倍,甚至几十倍。1、避免在where子句中使用 is null 或 is not null 对字段进行判断。如:select id from table wher
2017-03-06 15:30:27
337
转载 读《MySQL性能调优与架构设计》笔记之影响 MySQL Server 性能的相关因素
1. 商业需求对性能的影响这里我们就拿一个看上去很简单的功能来分析一下。需求:一个论坛帖子总量的统计附加要求:实时更新在很多人看来,这个功能非常容易实现,不就是执行一条SELECT COUNT(*)的Query 就可以得到结果了么?是的,确实只需要如此简单的一个Query 就可以得到结果。但是,如果我们采用不是MyISAM 存储引擎,而是使用的Innodb 的存储引擎,那么大家可以
2017-03-06 14:28:02
956
原创 MySQL数据库引擎
数据库引擎是用于存储、处理和保护数据的核心服务。利用数据库引擎可控制访问权限并快速处理事务,从而满足企业内大多数需要处理大量数据的应用程序的要求。 使用数据库引擎创建用于联机事务处理或联机分析处理数据的关系数据库。这包括创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)存储引擎的类型包括:MyISAM、InnoDB 、Memory、CSV等9种我们重点
2017-03-03 17:56:10
316
原创 Centos6.8 查看、修改MySQL数据库引擎
通过mysql -uroot -p登录到数据库。1.查看当前的引擎mysql> show engines \G;mysql> show engines \G;ERROR 2006 (HY000): MySQL server has gone awayNo connection. Trying to reconnect...Connection id: 4
2017-03-03 17:41:06
1228
原创 CentOS6.8配置网络
1.查看网络地址: ifconfig -a2.配置网络配置: vi /etc/sysconfig/network-scripts/ifcfg-eth0 在ifcfg-eth0中配置如下: #设置开机启动 ONBOOT=yes3.重启网络: service network restart4.可以ping下真
2017-03-02 16:33:38
349
原创 CentOS6.8中安装JAVA环境
环境:1)CentOS-6.8-x86_64-minimal.iso2)jdk-7u80-linux-x64.rpm下载地址:链接:http://pan.baidu.com/s/1eRDGyqQ 密码:abqw1.首先查看Linux自带的JDK是否已安装。rpm -qa|grep java如:java-1.7.0-openjdk-1.7.0.79-2.5.5.0
2017-03-02 16:29:36
2039
原创 在CentOS6.8下rpm方式安装MySQL5.7
在CentOS6.8下rpm方式安装MySQL5.7环境:1)CentOS-6.8-x86_64-minimal.isohttp://uni.mirrors.163.com/centos/6.8/isos/x86_64/CentOS-6.8-x86_64-minimal.iso2)mysql-community5.7.17及其依赖下载地址:下载地址:mysql目录链接:
2017-03-02 16:00:57
3713
1
原创 Activity跳转时的数据传递
Intent是Activity与Activity之间,Activity与Service之间传递参数的介质,使用Intent和Bundle在组件之间传递数据,而这两种通常实现的是Java基本对象类型和String的传递。在实际项目中,页面之间传值,除了以上几种,经常还有传递Object对象、List类型、List类型和全局变量等等的需求。由于Activity跳转有两种方式,为此进行数据传递一共有两种方
2016-08-28 06:30:10
1051
原创 Intent实现Activity的跳转
Intent实现Activity的跳转 Android中提供了Intent机制来协助应用间的交互与通讯,Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用。 Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service/Br
2016-08-28 05:51:19
1341
原创 实现退出Activity的方式
实现退出Activity的方式a.finish() b.System.exit()a.关闭Activity并不立即释放内存—-finish() 调用finish()方法会执行Activity.onDestroy()方法,结束Activity生命周期。但并没有立即释放内存,活动的资源并没有被清理。 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.
2016-08-28 05:45:26
450
原创 Activity的启动模式
Activity任务栈 Activity在内存中的存储方式:是以任务栈的形式存储到内存中的。• 应用运行过程中,内存中可能会打开多个Activity,那么所有打开的Activity都会被保存在Activity任务栈 • 栈:后进先出,最先进栈,就会最后出栈Activity启动模式 设置Activity的启动模式,只需要在AndroidManifest.xml里对应的标签设置An
2016-08-28 05:44:23
500
原创 Android学习(58) -- xUtils之HttpUtils
HttpUtils的使用 HttpUtils本身就支持多线程断点续传,使用起来非常的方便创建HttpUtils对象HttpUtils http = new HttpUtils();下载文件http.download(url, //下载请求的网址 target, //下载的数据保存路径和文件名 true, //是否开启断点续传 true, //如果服
2016-05-29 20:44:33
405
转载 Android学习(57) -- xUtils简介使用
项目git地址https://github.com/wyouflf/xUtils 参考:http://www.oschina.net/p/xutilsxUtils3简介xUtils 包含了很多实用的android工具.xUtils 支持超大文件(超过2G)上传,更全面的http请求协议支持(11种谓词),拥有更加灵活的ORM,更多的事件注解支持且不受混淆影响…xUtils 最低兼容Andro
2016-05-29 20:42:04
576
原创 Android学习(56) -- 断点续传多线程下载(Android)
手机版的断点续传多线程下载器把刚才的代码直接粘贴过来就能用,记得在访问文件时的路径要改成Android的目录,添加访问网络和外部存储的路径用进度条显示下载进度拿到下载文件总长度时,设置进度条的最大值//设置进度条的最大值pb.setMax(length);进度条需要显示三条线程的整体下载进度,所以三条线程每下载一次,就要把新下载的长度加入进度条定义一个int全局变量,记录三条线程的总下载长度
2016-05-29 20:33:53
238
原创 Android学习(55) -- 带断点续传的多线程下载(Java)
原理将要已经下载进度保存到临时文件中,例如:下载了3000字节的话,也就是保存了0~2999的位置,下次从3000的位置开始继续下载,那么把3000保存到临时文件中即可。对于多线程的话,我们也要分别进行记录,有几个线程则保存几个文件, 例如 0号线程:下载了6000字节 记录 0~5999 下次从6000字节开始 1号线程:下载了4000字节 记录 0~3999 下次从4000字节开始
2016-05-29 20:28:08
293
原创 Android学习(54) -- 多线程下载 原理和代码
多线程下载 原理:服务器CPU分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服务器资源 单线程下载:从输入流第0个字节开始读取,读取到最后一个字节,把读取到的数据写到本地文件中, 写的时候也要从文件的第0个位置开始写,写到最后一个位置 多线程的计算:每个线程预下载的大小: size = 总
2016-05-29 17:35:52
406
原创 Android学习(53) -- 使用异步HttpClient--loopj/android-async-http
发送get请求 //创建异步的httpclient对象 AsyncHttpClient ahc = new AsyncHttpClient(); //发送get请求 ahc.get(path, new MyHandler());* 注意AsyncHttpResponseHandler两个方法的调用时机 class MyHandler extends AsyncH
2016-05-28 07:25:38
357
原创 Android学习(52) -- 使用HttpClient框架做POST提交
发送post请求 //创建一个客户端对象 HttpClient client = new DefaultHttpClient(); //创建一个post请求对象 HttpPost hp = new HttpPost(path);往post对象里放入要提交给服务器的数据//要提交的数据以键值对的形式存在BasicNameValuePair对象中List<NameValu
2016-05-23 23:53:40
310
原创 Android学习(51) -- 使用HttpClient框架做GET提交
发送get请求创建一个客户端对象HttpClient client = new DefaultHttpClient();创建一个get请求对象HttpGet hg = new HttpGet(path);发送get请求,建立连接,返回响应头对象HttpResponse hr = hc.execute(hg);获取状态行对象,获取状态码,如果为200则说明请求成功if(hr.getStatus
2016-05-23 23:49:54
222
原创 Android学习(50) -- 使用post方式提交数据
要点post提交数据是用流写给服务器的协议头中多了两个属性Content-Type: application/x-www-form-urlencoded,描述提交的数据的mimetypeContent-Length: 30,描述提交的数据的长度//给请求头添加post多出来的两个属性String data = "name=" + URLEncoder.enco
2016-05-11 06:15:13
2138
原创 Android学习(49) -- 使用get方式提交数据
get方式提交的数据是直接拼接在url的末尾final String path = "http://192.168.1.103/Web/servlet/CheckLogin?name=" + name + "&pass=" + pass;发送get请求,代码和之前一样URL url = new URL(path);HttpURLConnection conn = (HttpURL
2016-05-11 06:08:42
1938
原创 Android学习(48) -- 获取xml文件并解析.
1、根据xml的格式创建JavaBeanpublic class News { private String title; private String detail; private String comment; private String imageUrl; @Override public String toString() { return "News [ti
2016-05-10 06:29:58
1095
原创 Android学习(46) -- SmartImageView
作者主页:http://loopj.com/android-smart-image-view/ 有使用方法。github上面源码: https://github.com/loopj/android-smart-image-viewSmartImageView的设计初衷是来取代Android自带的ImgageView组件,支持从URL和通讯录中获取图像,并支持异步加载和缓存
2016-05-09 22:58:53
450
原创 Android学习(45) -- 自定义控件(9) 下拉刷新 (添加footer)
样式效果1、创建底部的布局 layout_footer.xml<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"
2016-04-26 15:56:06
2802
原创 Android学习(44) -- 自定义控件(8) 下拉刷新(添加header)
1、定义HeaderView的布局2、创建一个类去继承ListView,并重写两个构造器3、在MainActivity中使用自定义ListView展示数据4、在自定义ListView中将HeaderView添加到ListView上部1、自定义HeaderView layout_header.xml自定义ProgressBar1、定义一
2016-04-25 15:51:02
825
原创 Android学习(43) -- 自定义控件(7) 滑动开关
自定义控件步骤:测量:onMeasure 设置自己显示在屏幕上的宽高布局:onLayout 设置自己显示在屏幕上的位置(只有在自定义ViewGroup中才用到)绘制:onDraw 控制显示在屏幕上的样子(自定义viewgroup时不需要这个)View和ViewGroup的区别1.他们都需要进行测量操作2.ViewGroup主要是控制子view如何摆放,
2016-04-25 11:57:18
559
原创 Android学习(42) -- 自定义控件(6)下拉选择实现( 动态ListView + popupWindow)
要实现的效果图下拉列表使用的是 动态ListView + popupWindow实现 1、设置布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" andro
2016-04-24 10:25:47
1392
原创 Android学习(41) -- 自定义控件(5)图片轮播(伪循环)
我使用ViewPager进行图片轮播时候,发现当到了开头或末尾不能再继续了,此时是因为PagerAdapter中的getCount方法进行了限定,明确了具体的数量,当到达数量的时候的,就不在进行调用instantiateItem方法了。如果想改变的话
2016-04-24 08:12:22
579
原创 Android学习(40) -- 自定义控件(4)广告轮播(ViewPager)
ViewPager是3.0之后才出现的,之前版本使用v4包ViewPager预加载机制:最多保存3个page,超过的将需要使用destroyItem被销毁掉效果图片1、在layout布局文件中定义布局<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:t
2016-04-23 17:36:49
621
原创 Android学习(39) -- 关联jar包的源代码(两种方式)
我们在实际开发的过程中,需要关联jar包的源代码。如下是没有关联源代码的,并且没有Attatch Source按钮:我们最终希望的是如下效果关联jar包的源代码有两种形式:第一种 1.右键点击Android Private Libraries,将它使用Build Path菜单将其 remove掉,2、 再右键点击
2016-04-23 15:10:30
379
原创 Android学习(38) -- 自定义控件(3)点击Menu键显示隐藏菜单
如果想实现点击Menu键显示隐藏菜单,那么就需要重写onKeyDown方法。想解决多次点击事件,动画无法完全执行,就需要AnimUtil类中定义一个静态变量,用于记录当前执行的动画数量。需要使用RotateAnimation中的setAnimationListener来实现对该静态变量的操作,当启动动画的时候进行对该变量进行自加操作,当结束动画的时候对该变量进行自减操作。
2016-04-22 18:17:23
1036
系统架构新版 .txt
2020-04-20
Java + Android 必会英语词汇.pdf
2016-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人