自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 java多个文件压缩打包成zip下载

java多个文件压缩打包成zip下载如果实现批量操作一些文件,使之压缩打包成zip下载?具体实现步骤如下:设置下载文件名编码创建zip输出流ZipOutputStream将需要下载的文件流循环写入ZipOutputStream关闭各个流话不多说,直接上代码service层方法(关键):@Override public void downloadAllFile(HttpS...

2018-12-21 14:53:53 18187 6

原创 mybatis:org.apache.ibatis.ognl.ParseException: Encountered " <IDENT> "OR "" at line 1, column 26错误解决

在mybatis项目中有一个sql做了对list集合做判空操作,sql如下:&amp;lt;if test=&quot;personnelHasList == null OR personnelHasList.size == 0&quot;&amp;gt;运行项目的时候发现时不时会出现以下报错情况:Servlet.service() for servlet [dispatcherServlet] in context...

2018-08-09 16:36:40 18422 5

原创 Mysql配置主从同步步骤

前阵子因业务需要,需要使用两台电脑配置Mysql主从同步,经过一番折腾,成功配置完成,在此记录一下主从库的配置过程。 配置步骤:1)准备工作主从同步可使用于数据备份、读写分离、根据业务拆分访问从库等,其中,从数据库是主数据库的备份,因此要求从数据库的数据库名2)主库、从库配置Mysql的my.ini文件my.ini文件是在Mysql的安装目录下,与bin目录同级(如我的M...

2018-07-17 15:06:46 508

原创 mysql之count性能比较

mysql之count性能比较1)count(1)、count(*)、count(列)使用场景如果要求统计的是表的结果集,使用count(1)或count(*)如果统计的是列值,使用count(列),count(列)不统计值为NULL的数据 官方文档如下: 当查询count(主键)时,语义与count(*)、count(1)一样,但是性能存在差异,count(主键)性能最差,...

2018-07-10 18:24:29 2627 1

转载 SharedPreference提交的commit与apply的区别

在网上看了一下别人写的关于SharedPreference提交的commit与apply的区别,稍微整理一下.这两个方法的区别在于: 1. apply没有返回值,而commit返回boolean,表明修改是否提交成功 2. apply是将修改数据原子提交到内存, 而后异步真正提交到硬件磁盘, 而commit是同步的提交到硬件磁盘,因此,在多个并发的提交commit的时候,他们会等待正在

2016-11-24 17:42:30 1122 1

转载 最详细的 Android Toolbar 开发实践总结

出自:http://www.codeceo.com/article/android-toolbar-develop.html初识 ToolbarToolbar是在 Android 5.0 开始推出的一个 Material Design 风格的导航控件 ,Google 非常推荐大家使用 Toolbar 来作为Android客户端的导航栏,以此来取代之前的 Action

2016-11-18 16:45:52 361

原创 Android四大组件之广播注册的两种方式

广播接收者可以自由地对自己感兴趣的广播进行注册,当有相应的广播发出时,广播接收者就能够收到该广播,并在内部处理相应的逻辑.注册广播的方式有两种:1.动态注册,即在代码中注册2.静态注册,即在AndroidManifest.xml中注册动态注册的关键方法:registerReceiver,可以在onCreate()中注册,应用一启动就可以接收广播.但是要注意的是,动态注册的广

2016-10-30 14:16:38 893

原创 有序广播与无序广播

无序广播(Normal broadcasts),也称标准广播,是一种完全异步执行的广播,在广播发出后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此它们之间没有先后顺序.这种广播效率会比较高,但它是无法被截断的.有序广播(Ordered brocastcasts)是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收者能够接收到这条广播消息,当这个广播接收者的逻辑

2016-10-30 13:07:08 2008

原创 Android四大组件之Activity的四种启动模式

一个应用中可能有多个界面 那么每个界面展示的次序不同,创建的先后顺序不同,存储界面的内存方式也不同,我们称这种存储方式为任务栈。1. 栈的特点:先进后出2. 任务栈的配置位置:AndroidMenifest.xml中标签有个属性 android:launcherMode=""3. 任务栈的4种属性值:standard singleTop singleTasksing

2016-10-27 17:20:29 724

原创 Android四大组件之Activity的生命周期

我们可以知道Activity从创建到销毁,调用会6个方法,onCreate()-->onStart()-->onResume()-->运行在最前端-->onPause()-->onStop()-->onDestory()

2016-10-27 15:53:58 331

原创 Android中的请求码

在Android中,当Activity之间相互跳转时,可以使用意图(Intent)来传递相应的数据。新的Activity与原来Activity不在同一个进程中,原来Activity带着请求码跳到一个新的Activity界面,可以使用startActivityForResult(Intent intent, int requestCode)。当新的Activity关闭时,会触发原来Activit

2016-10-27 15:14:37 1543

原创 Android下的数据保存、文件读写以及访问模式

如何在手机上保存数据:1. android的文件系统使用的是linux的文件系统(没有c盘 d盘..)2. android下应用程序的路径和javase不同,直接保存在根目录下会报错.这是因为如果大家都能保存到根目录,那么别的应用也能读取到你存储的文件信息,这样就造成了不安全性3.保存数据到文件中一般有两个方法1)保存到/data/data/应用的包名/files目录数据选

2016-10-17 17:52:29 604

原创 Android学习:测试的相关概念及Android下的单元测试

测试相关的概念:1. 好的应用都是被测出来的2. 测试的分类:1)根据是否知道源代码:白盒测试: 知道源代码 根据源代码来进行测试 (程序员 高级测试人员)黑盒测试: 不知道源代码 知道产品的功能 根据功能去测试 (大部分小型公司的做法)2)根据测试的粒度(精细程度):方法测试: 写一个测试方法 测试某个类里面的方法单元测试:可以测试某一个方法 测试多个方法 (安卓

2016-10-17 17:04:21 312

原创 Android开发学习笔记:五大布局

1.View:View表示控件,View与View之间是无法嵌套的,为了让控件能够嵌套其他控件,产生了ViewGroup,ViewGroup继承了View,ViewGroup一般也比较少使用,我们一般使用其子类实现,即五大基本布局(AbsoluteLayout、FrameLayout、LinearLayout、TableLayout、RelativeLayout)View的属性:① 控

2016-10-17 11:24:35 377

原创 Android中常用单位和日志(LogCat)的使用

1.Android中常用的单位(px dp sp)(1)px:电脑 电视上的分辨率的尺寸单位。像素是构成数码影像的基本单元。现在android中一般不使用px,因为使用px,在不同手机设备上显示的效果是定死的。(2)dp:推荐使用使用dp单位,与平时所说的dip是一样的。(设备独立像素).不同设备有不同的显示效果,可根据手机屏幕大小自动缩放,这个和设备硬件有关,不依赖像素。(3)s

2016-10-08 22:08:50 415

原创 线程通信-等待和唤醒机制和锁(Lock)机制

生产者和消费者案例分析:经典的生产者和消费者案例(Producer/Consumer):     分析案例:              1):生产者和消费者应该操作共享的资源(实现方式来做).              2):使用一个或多个线程来表示生产者(Producer).              3):使用一个或多个线程来表示消费者(Consumer).生产者消费者

2016-10-07 14:19:57 3482 3

原创 线程同步:解决线程不安全问题

当多个线程并发访问同一个资源对象时,可能会出现线程不安全的问题,比如现有50个苹果,现在有请三个童鞋(小A,小B,小C)上台表演吃苹果.因为A,B,C三个人可以同时吃苹果,此时使用多线程技术来实现这个案例.class Apple implements Runnable{ private int num = 50;//苹果总数 public void run() { for (int

2016-10-07 12:30:16 4840

原创 创建和启动线程的两种方式

方式1:继承Thread类步骤:1):定义一个类A继承于java.lang.Thread类.2):在A类中覆盖Thread类中的run方法.3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体.4):在main方法(线程)中,创建线程对象,并启动线程.(1)创建线程类对象:                A类   a  =  new   A类();

2016-10-07 10:52:48 34008 2

原创 进程与线程概述

并行与并发并发和并行是即相似又有区别(微观概念):并行:指两个或多个事件在同一时刻点发生;并发:指两个或多个事件在同一时间段内发生。 在操作系统中,在多道程序环境下,并发性是指在一段时间内宏观上有多个程序在同时运行,但在单CPU系统中,每一时刻却仅能有一道程序执行(时间片),故微观上这些程序只能是分时地交替执行。倘若计算机系统中有多个CPU,则这些可以并发执行的程序便可被分

2016-10-07 10:27:40 411

原创 数据库增删改操作(DML)

DML:插入语句插入语句:一次插入操作只插入一行.INSERT INTO table_name (column1,column2,column3...)VALUES (value1,value2,value3...); 1)一般插入操作一次只能插入一行,但MySQL可以一次插入多条数据记录(MySQL特有): INSERT INTO  table_name (column1

2016-10-06 14:52:52 962

原创 数据库查询操作(DQL)

简单查询:简单查询:语法:SELECT {*, column [AS] [alias],...}FROM    table_name;说明:SELECT  选择查询列表FROM    提供数据源(表、视图或其他的数据源) -----------------------------------------------------------------------

2016-10-06 14:32:37 510

原创 对SQL简单介绍、数据库、表的简单操作

1.SQL语句简单介绍:SQL(结构化查询语言(Structured Query Language))包含6个部分(数据查询语言DQL、数据操作语言DML、数据定义语言DDL、事务处理语言TPL、数据控制语言DCL、指针控制语言CCL),在Java中常用的有三种,DQL、DML、DDL:一:数据查询语言(DQL):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应

2016-10-06 12:22:51 1514

原创 SAX解析XML

SAX解析是一种与PULL解析器类似的XML解析的方法,不同的是,使用PULL解析需要程序员自己获取产生的事件做相应的操作。SAX解析的特点是逐行扫描文档,一边扫描一边解析,这种方式比起一次性将整个XML文件加载到内存中的DOM解析方式也更为安全(不易造成内存溢出),也更为快速有效。同时,SAX还可以在解析文档的任意时刻停止解析。当然,它也有缺点,那就是相对来说,SAX的操作复杂一点。 S

2016-10-06 10:30:50 518

原创 打印流概述

打印流,打印数据的,打印流只能是输出流: PrintStream: 字节打印流 PrintWriter:  字符打印流-对于PrintWriter来说,当启用字段刷新之后,调用println或者printf或者format方法,便会立马刷新操作(自动刷新). 如果没有开启自动刷新,则需要手动刷新或者当缓冲区满的时候,再自动刷新.(或直接调用close()方法,会自动刷新) 

2016-10-05 16:06:13 1763

原创 包装流和缓冲流

处理流/包装流(相对于节点流更高级)装饰设计模式/包装模式:1:隐藏了底层的节点流的差异,并对外提供了更方便的输入/输出功能,让我们只关心高级流的操作.2:使用处理流包装了节点流,程序直接操作处理流,让节点流与底层的设备做IO操作. 实际识别处理流/包装流非常简单,只要流的构造器参数不是一个物理节点,而是已经存在的流,那么这种流就一定是处理流,而所有节点流都是直接以物理IO节点作为

2016-10-05 14:56:02 1852

转载 java 字节流与字符流的区别

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图12-6所示。下面以两个写文件的操作为主进行比较,但是在操作时字节流和字符流的操作完成之后都不关闭输出流。范例:使用字节流不关闭执行Java代码

2016-10-05 13:49:10 298

原创 如何拷贝指定类型的文件以及如何更改拷贝的文件的扩展名

1.如何拷贝指定目录下的指定类型的文件到指定另一目录中:使用过滤器(FilenameFilter)过滤文件//案例1:文件拷贝案例-拷贝指定目录的指定类型文件到指定目录. private static void test1() throws IOException { //源文件 File srcDir = new File("file"); //目标文件 File de

2016-10-05 12:53:39 1985

原创 Java如何实现文件拷贝操作和如何正确关闭资源

使用字节流完成文件的拷贝:使用字节输入流(FileInputStream)将源文件中的数据读进来,同时使用字节输出流(FileOutputStream)将读进来的数据写到目标文件中,即一边读一边写,完成文件的拷贝。//使用字节流完成文件的拷贝操作public class FileStremCopyDemo { public static void main(String[] args)

2016-10-05 12:08:07 8052

原创 如何使用文件字节输出流(FileOutputStream)将数据写到磁盘文件中

步骤:1.创建目标对象(表示把数据存储到哪一文件中)2.创建文件字节输出流对象3.具体的输出操作(往外写的操作)4.关闭资源对象//演示文件字节输出流public class FileOutputStreamDemo { public static void main(String[] args) throws IOException { //1创建目标文件 Fil

2016-10-05 11:11:29 14294

原创 如何使用文件字节输入流(FileInputStream)将文件读取到程序中

读取步骤:1. 创建源对象2.创建文件字节输入流对象(FileInputStream),并接在源上3.进行IO操作(具体的读取操作)4.关闭文件(必不可少的一步,如果操作文件,就得开通一个流对象关联我们得磁盘文件,如果不关闭资源,那么磁盘的文件一直被程序所引用着,不能删除,也不能更改.)//文件字节输入流public class FileInputStreamDemo {

2016-10-05 10:47:54 28227 1

原创 输入和输出(IO)流的简单介绍

IO操作是一个相对的过程,一般,我们站在程序角度来思考(程序的内存):1)程序需要数据:把数据流入到程序中--->输入.2)程序需要保存数据,把数据传递给别人--->输出. IO流的分类站在不同的角度,IO的分类方式是不一样的:1):根据流向划分:输入流和输出流.2):根据数据的单位划分:字节流和字符流.3):根据功能的划分:节点流和包装流. 四大基

2016-10-03 16:52:34 715

原创 Java中File的常用操作及方法

1.获取File路径和检测状态:1)操作File路径和名称:File getAbsoluteFile() :获取绝对路径String getAbsolutePath():获取绝对路径String getPath() :获取文件路径String getName() :获取文件名称File getParentFile():获取上级目录文件String getParent()

2016-10-03 16:15:38 529

原创 使用数据库连接池获取JDBC数据库

为什么必须使用数据库连接池: 1.普通的JDBC数据库连接使用DriverManager来获取,每次向数据库建立连接时都要将Connection加载到内存中,再验证用户名和密码。需要数据库连接的时候,就向数据库要求一个,执行完后就断开连接,这样的方式会消耗大量的资源和时间,数据库的连接资源并没有得到很好的重复利用。若是同时有几百人甚至几千人在线,频繁地进行数据库连接操作,这将会占用很多的系

2016-09-23 16:23:38 5333

原创 Java模拟银行转账(操作事务)

案例:A给B转10000块钱1.准备工作:在数据库先建一张表(t_account):id name balance-----------------------------------------------------------------------1 A  200002 B 0---------------------------------------

2016-09-23 15:59:15 17983 5

原创 事务的简单介绍

事务(Transaction,简写为tx):在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。 为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:     当每个逻辑操作单元全部完成时,数据的一致性可以保持,     而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退(rollBack)到开始状态。

2016-09-23 15:56:38 504

原创 Statement和PreparedStatement的区别

1).PreparedStatement代码的可读性和可维护性. (SQL模板,使用占位符表示参数)String sql = "select * from t_student where name = ? "; //连接数据库 Connection conn = DBUtils.getConnection(); //创建语句对象 PreparedStatement ps =

2016-09-23 15:46:53 1349

原创 通过JDBC获取数据库连接

获取数据库的连接,步骤:在程序当中要操作数据库,第一步应该将对应数据库的驱动包拷贝到项目中2.获取连接:口诀:贾琏欲执事(贾琏是红楼梦中的人物,是王熙凤的丈夫,王熙凤很强势,因此。。。不过这个口诀跟Java没多大联系,纯属是为了方便记忆)1).加载注册驱动(贾)Class.forName(“驱动类的全限定名”)2).获取连接对象(琏)Connecti

2016-09-20 16:00:36 4964

原创 Java JDBC的简单介绍

在Java中,要进行数据库的存取技术一般是通过JDBC访问数据库。 JDBC访问数据库的形式主要有两种:   1).直接使用JDBC的API去访问数据库服务器(MySQL/Oracle).   2).间接地使用JDBC的API去访问数据库服务器.(开发速度快,效率高,执行速度慢,执行效率低)     第三方O/R Mapping工具,如Hibernate, MyBatis等.(

2016-09-20 15:42:46 553

原创 Java反射机制

为什么要使用反射?举个例子,程序在运行时接收到外部传入的一个对象,该对象的编译时类型是Object,但程序又需要调用该对象运行时类型的方法,编译时根本无法预知该对象和类可能属于哪些类,程序只能依靠运行时信息来发现该对象和类的真实信息,这时候就必须使用反射。Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个

2016-09-20 14:47:33 387

原创 获取Class字节码对象的三种方式

每个类被加载之后,系统就会为该类生成一个对应的字节码对象,通过该字节码对象就可以访问到JVM中的对应的类。在Java中获得Class对象通常有三种方式。方式一,使用类的class属性:Class clz1 = java.util.Date.class;方式二,通过Class类中的静态方法forName(String className),传入类的全限定名(必须添加完整包名)

2016-09-17 13:07:17 15188

eclipse-sonar插件离线安装包-直接放在安装目录并重启即可.zip

检查代码规范插件,解压,将sonar-plugin文件夹下的两个文件夹复制到eclipse安装目录下,重启eclipse,在项目目录上右键便可看到SonarLint字眼,即右键-SonarLint-AnaLyze

2019-05-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除