- 博客(51)
- 收藏
- 关注
转载 MySQL数据库优化(三)——MySQL悲观锁&&乐观锁(并发控制)
一、悲观锁 1、排它锁,当事务在操作数据时把这部分数据进行锁定,直到操作完毕后再解锁,其他事务操作才可操作该部分数据。这将防止其他进程读取或修改表中的数据。 2、实现:大多数情况下依靠数据库的锁机制实现 一般使用 select ...for update 对所选择的数据进行加锁处理,例如select * from account where name=”Max” for upd...
2018-02-25 22:33:51
776
转载 PreparedStatement 如何防止SQL注入
SQL注入最简单也是最常见的例子就是用户登陆这一模块,如果用户对SQL有一定的了解,同时系统并没有做防止SQL注入处理,用户可以在输入的时候加上’两个冒号作为特殊字符,这样的话会让计算机认为他输入的是SQL语句的关键字从而改变你的SQL语句,造成不可估量的损失。 在JDBC中通常会使用PreparedStatement来代替Statement来处理sql语句,如 String
2017-10-17 10:25:04
515
原创 九个jsp内置对象
所谓的jsp的内置对象其实就是在jsp中已经为我们提供好了。拿来就可以使用的。 共有9个。因为传上来后论坛不能排版,所以只能传图片了。。。 `
2017-09-29 20:28:26
404
原创 Servlet中解决乱码的三种方式
1、通用方式: String path = request.getParameter(“btn”); path = new String(path.getBytes(“iso-8859-1”), “utf-8”);2、解决post方式的乱码问题: request.setCharacterEncoding(“utf-8”); String name = request.getParameter
2017-09-26 22:46:20
923
原创 TomCat工作原理
TomcatServer处理一个HTTP请求的过程:描述: 1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。 2、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。 3、Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host。 4
2017-09-20 21:52:38
636
2
原创 Servlet生命周期
Servlet的生命周期是由容器管理的,在其生命周期中拥有以下三个阶段: 1、 初始化 2、 服务 3、 销毁当一个客户端第一次访问某个servlet时,容器会自动创建该servlet对象,并在创建完成后执行一次该对象的init方法。然后在新线程中调用该对象的service方法,然而容器在对象调用完毕后并不会立即销毁该对象,而是在容器的关闭过程中销毁这个对象,在销毁该对象前调用这个对象的
2017-09-20 21:45:01
500
转载 Java 使用 ObjectStream 时的注意事项
Java 使用 ObjectStream 时的注意事项 在向下阅读之前,请注意 JavaBean 要实现 Serializable 接口。初始化时发生了什么?ObjectOutputStream 初始化时会送出其 header 数据给对端。ObjectInputStream 初始化时会阻塞地接收来自对端的 header 数据。发现了吗,这可能会有两处问题。
2017-08-28 13:00:55
803
原创 泛型方法与普通方法
使用了泛型类型的方法不是泛型方法,如: 这里只是采用了泛型而已而像下图这样才是泛型方法: 这样才是所谓的泛型方法,意思是这个方法所自己定义的泛型,在调用时,根据参数类型确定它的类型
2017-08-16 20:38:17
904
原创 正则表达式--Split易错题
public class TestSplit { public static void main(String[] args) { String s= "aa bb cc"; System.out.println(Arrays.toString(s.split(" +"))); //split括号里的数代表1或更多个空格 Stri
2017-08-08 19:39:52
379
原创 IO流--多级文件夹下的所有目录复制到指定目录下
如题:/** * 将多级目录H:\\aa 目录下,.java 复制到 h:\\cc下 * @author ZYxiao * */public class CopyFileFolder { public static void main(String[] args) throws IOException { File inputFile = new File
2017-08-05 12:40:19
767
2
原创 IO流--将单级文件夹下的文件复制到目标文件夹下,并重命名所有文件
如题:/** * 将单级目录H:\\aa 目录下,.java 复制到 h:\\bb,并重命名为.jdg文件 * @author ZYxiao * */public class FileCopyRename { public static void main(String[] args) throws IOException{ File inputFile =
2017-08-05 12:39:24
474
原创 IO--字符流操作五种方式及字节流的四种方式+图谱
字节流复制文件的四种方式(简单的读取操作,将复制操作拆分即可)import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputSt
2017-08-05 09:42:57
913
转载 Java 静态绑定与动态绑定
程序绑定的概念:绑定指的是一个方法的调用与方法所在的类(方法主体)关联起来。对java来说,绑定分为静态绑定和动态绑定;或者叫做前期绑定和后期绑定.静态绑定:在程序执行前方法已经被绑定(也就是说在编译过程中就已经知道这个方法到底是哪个类中的方法),此时由编译器或其它连接程序实现。例如:C。针对java简单的可以理解为程序编译期的绑定;这里特别说明一点,java当中的方法只有final,stat
2017-08-04 12:18:46
326
原创 IO操作时,系统为什么不会将字符与汉字搞错
FileInputStream 读取英文字符时,得到的为正数,而取汉字时,得到的第一个int值为负值,第二个值可能为正数,所以当系统发现有一个int值为负值是,便将他与后面的一个int值进行拼接。故而不会搞错。public static void main(String[] args) { String s="abcd"; byte[] b1= s.getBytes(
2017-08-03 19:39:03
266
原创 继承--关于子类对象中包含父类内容的随笔
今天老师讲到这里是走了下神,之后一直理解不到位,很难受。。。 代码及堆内的内存图如下:class A{}class B extends A{}class C extends B{} 纠结的问题是为什么可以访问实例成员变量,而不能访问静态的呢,后来经过老师提醒,知道堆内C的对象包含的只是普通成员变量,父类的方法和静态成员等都在方法区中,不写在堆中。。。调用时通过父类指向方法区调用ps:静态方法
2017-08-02 20:46:28
722
转载 类于类之间的关系--继承、实现、依赖、关联、聚合、组合的联系与区别
继承、实现、依赖、关联、聚合、组合的联系与区别分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性; 实现指的是一个class类实现interface接口(可以是多个)的功能;实现是类与接口之间最常见
2017-08-01 19:05:06
1727
原创 螺旋二维数组
package cn.bjsxt.luoxuan;import java.util.Scanner;public class LuoXuan{ //检测边界与是否该方向下一个已赋值 //返回方向 public static int checkBounds(int direction, int height, int width, int[][] array){
2017-07-29 12:35:27
1005
转载 Java 关于继承中的static代码块,普通代码块及构造方法的执行顺序
package cn.edu.bjsxt;class Base { { System.out.println("base block"); } static { System.out.println("base static block"); } Base() { System.out.println("base
2017-07-28 16:22:39
574
原创 数组优缺点总结
优点: 1、按照索引查询元素速度快 2、能存储大量数据 3、按照索引遍历数组方便缺点: 1、根据内容查找元素速度慢 2、数组的大小一经确定不能改变。 3、数组只能存储一种类型的数据 4、增加、删除元素效率慢 5、未封装任何方法,所有操作都需要用户自己定义。
2017-07-27 19:12:10
18113
原创 选择排序
选择排序 算法思想:从待排序的数组中选择一个最小的元素,将它与数组的第一个位置的元素交换位置。然后从剩下的元素中选择一个最小的元素,将它与第二个位置的元素交换位置,如果最小元素就是该位置的元素,就将它和自身交换位置,依次类推,直到排序完成。//选择排序 public static void selectSort(int[] array){ int len = array
2017-07-27 19:06:18
250
原创 按位取反的用法
//按位取反:先求当前数的补码,再将补码完全取反,然后根据取反后的补码求其原码import java.util.Random;public class Test4{ public static void main(String[] args){ //按位取反:先求当前数的补码,再将补码完全取反,然后根据取反后的补码求其原码 System.out.println(~0);
2017-07-20 12:08:24
1331
原创 Spring——AOP com.sun.proxy.$Proxy7 cannot be cast to xxx
今天在写Spring的AOP时,遇到一个错误com.sun.proxy.$Proxy7 cannot be cast to cn.edu.real.Host上网查了下得到以下解决办法 在beans.xml的里加上proxy-target-class="true"我的代码如下:就算是注解写aop也是直接加上这句话就可以
2017-06-07 22:13:15
1157
原创 异常处理及try/catch/finally/return 的执行顺序:
一、 Java分为checked异常(try、catch,自动提醒)和unchecked异常(系统不自动提醒),比较简单,不再详细赘述。 此处说一下几种常见unchecked异常的处理,要手动排查:1、NullPointException:空指针异常 解决方法: if(x!=null) { …..; }2、ArithmeticException:0做除数 解决方法: if(x!=0
2017-05-22 13:16:04
562
原创 File---文件类
1、File 是对文件及目录进行操作的类,包含很多的方法,调用时API查询即可。 2、注意:file.mkdir()与file.mkdirs的区别。 file.mkdir(): 当最底层目录的上层目录中有不存在的目录时,mkdir不进行创建操作 file.mkdirs(): 当最底层目录的上层目录中有不存在的目录时,mkdirs将所有文件夹目录创建 3、在下方代码中测试了创建、删除、判断是
2017-05-22 13:14:24
298
原创 关于Date、DateFormat、Calendar的综合应用--日历
在学习了日期类后,编写了一个简单的日历小程序, 代码如下:package cn.ldedu;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import
2017-05-22 13:13:02
348
原创 Calendar
主要用于对日历时间的加减、赋值操作,同样是抽象类,用它的子类GregorianCalendar实现具体方法。 主要要掌握get、set和add方法,因为Date类下的方法很多,其他需要的方法需要时查询即可。 ps:一月是0,依次后推;周日是1,周六是7;具体方法在代码中有演示。 测试代码如下:package cn.ldedu;import java.util.Calendar;import
2017-05-22 13:11:20
308
原创 DateFormat
DateFormat主要用于对时间类型和字符串类型之间进行相互转化,DateFormat是个抽象类,所以要使用它的子类SimpleDateFormat来解决问题。 需要熟悉两个方法,.format(时间转化为字符串) 和.parse(字符串转化为时间)方法测试代码:package cn.ldedu;import java.text.DateFormat;import java.text.Pars
2017-05-22 13:10:13
458
原创 Date--时间类
Date表示的是距离标准纪元1970.1.1零点到某个时间的毫秒数,类型是long,可正可负。 Date的主要用法在于输出当前时间和有参构造函数时输出距离标准纪元特定毫秒的时间。测试代码: `package cn.ldedu;import java.util.Date;public class DateTest { public static void main(String[] ar
2017-05-22 13:08:44
282
原创 包装类、自动装箱、自动拆箱
包装类: 1、Java中的基本类型都有其对应的封装,即包装类,简而言之就是将基本数据类型封装为一个对象。 2、对应的包装类大部分是基本数据类型的首字母大写,但是有特例,如:int—Integer, char–Character。 3、包装类可以调用一些方法,而基本数据类型则无法调用。 4、基本数据类型的默认值为:整形:0; boolean:false; char:/u0000; 浮点
2017-05-22 13:07:01
386
原创 数组打印、复制、赋值替换、二分法查找、命令行参数及增强for循环
1、打印数组时可以不用循=循环打印,调用Arrays.toString(数组名)即可,只是打印结果会包含数组两边的方括号,如[1,2,3]。 2、Arrays.binarysearch(x); 数组二分法搜索 3、arrays.fill(a,2,4,100) 将数组a中索引为2到4的元素替换为100 4、Arrays.fill(a,6); 将a数组全部替换为6 5、System.array
2017-05-22 13:04:29
550
原创 关于String类型遗漏点与StringBuilder、StringBuffer
1、String可以直接用字符数组赋值 如: char[] a={‘a’,’b’,’c’,’d’}; String b=new String(a); 2、String是不可变字符序列,并不是说String的值不可改变,而是在改变时原有的值不会改动,而会开辟新的空间在拷贝原值的基础上做改动。因为在String的源码里value的修饰符是final,不能修改,每
2017-05-19 14:48:17
354
原创 Java--内部类
内部类 1、内部类中的类只能通过外部类调用,内部类可以访问外部类的私有属性。 2、内部类分为成员内部类(静态内部类,非静态内部类),匿名内部类(用于只调用极少次数的类,省去声明类的过程,直接在内部写,如监听器),局部内部类(用的极少,即定义在方法内部),基本语法在下方代码中体现(不含局部内部类)。package cn.ldedu;/** * 测试内部类 * @author Lenovo *
2017-05-19 14:45:38
300
原创 多态--回调
个人理解:基于多态实现,基本语法与多态相同,回调适用于一个完整的过程中某一步骤存在用户的差异,此处通过参数实现用户功能的调用,参数可以用接口或抽象类继承来实现,不过一般用接口。 如:package cn.ldedu;/** * 测试回调 * @author Lenovo * */public class testCallBack { public static void tes
2017-05-19 14:43:55
390
原创 抽象类与接口
抽象类: 1、抽象类不能被实例化,只能用来被继承。 2、有抽象方法的类必须定义为抽象类接口: 1、接口的变量系统自动设定为public static fianl修饰,不用自己修饰,也不可更改,方法也自动是public abstract,不用自己修饰,也不可更改, 2、接口可以多继承,继承后会得到父接口所有的变量及方法。一个接口也可以实现多个接口, 测试用例如下:package cn.lde
2017-05-19 14:41:53
262
原创 Java三大特征--多态
1、程序运行的最终结果只在执行期间才被确定,编译时无法确定 2、编译时所用参数类型一般为父类,运行时参数类型为确定的子类 3、三个必要条件:要有继承,子类要有方法的重写,父类引用指向子类对象(只可向下转型,不可向上转型)测试例子如下:package cn.ldedu;/** * 测试多态 * @author Lenovo * */class Animal{ public vo
2017-05-19 14:39:24
337
原创 关于继承时隐式参数(this,super)
1、每个无参函数都会默认有两个隐式参数(this,super),调用方法时如果当前对象没有某方法则会向父类逐层寻找,一直找到object类若还没有此方法则会报错。2、方法中的隐式参数(this,super)this永远指向调用该方法的对象,如Cat c=new Cat() ; c.run(this,super)中c的方法中的this和父类animal及更上层父类的方法中的this都指向c
2017-05-19 14:19:57
824
原创 Java三大特征--封装(隐藏)及高内聚低耦合的概念
一、内聚与耦合耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。 内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
2017-05-17 22:43:01
1582
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人