java修炼笔记
文章平均质量分 67
逸川先生
Java开发工程师,专注后台开发两年,擅长分布式系统
展开
-
连儿笔记 MVCC多版本并发控制
1、MVCC MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存。 MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理读写冲突,做到即使有读写冲突时,也能做到不加锁,非阻塞并发读。2、当前读 像select lock in share mode(共享锁), select for update ; up原创 2021-03-25 23:01:51 · 236 阅读 · 0 评论 -
Java集合的快速失败机制 “fail-fast”
快速失败是java集合的一种错误检测机制,当多个线程对集合进行结构上的改变的操作 时,有可能会产生 fail-fast 机制。例如:假设存在两个线程(线程1、线程2),线程1通过Iterator在遍历集合A中 的元素,在某个时候线程2修改了集合A的结构(是结构上面的修改,而不是简 单的修改集合元素的内容),那么这个时候程序就会抛出ConcurrentModificationException 异常,从而产生fail-fast机制。原因:迭代器在遍历时直接访问集合中的内容,并且在遍历过程中使用一个 mo原创 2021-03-19 09:30:28 · 255 阅读 · 0 评论 -
SpringBoot json不返回空
配置文件加上这几句就可以了spring: jackson: default-property-inclusion: non_null原创 2020-10-15 20:46:46 · 782 阅读 · 0 评论 -
封装继承多态还是封装抽象继承多态
一直觉得很奇怪,为啥我们讲到面向对象的时候总会有两种说法一种是三大特性,一种是说四大特性,原因如下抽象这个概念是一个非常通用的设计思想,并不单单用在面向对象编程中,也可以用来指导架构设计等。而且这个特性也并不需要编程语言提供特殊的语法机制来支持,只需要提供“函数”这一非常基础的语法机制,就可以实现抽象特性,所以,它没有很强的“特异性”,有时候并不被看作面向对象编程的特性之一。什...原创 2019-11-15 15:04:53 · 357 阅读 · 0 评论 -
QUARTZ入门Demo
quartz下载地址:http://www.quartz-scheduler.org/downloads/package quartz.example1;import static org.quartz.DateBuilder.evenMinuteDate;import static org.quartz.DateBuilder.evenSecondDateAfterNow;imp...原创 2019-10-23 21:05:25 · 128 阅读 · 0 评论 -
ObjectInputStream java.io.EOFException解决
Exception in thread "main" java.io.EOFException at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2681) at java.io.ObjectInputStream$BlockDataInputStream.readShort(Objec...原创 2019-10-20 21:19:23 · 4109 阅读 · 0 评论 -
Java BIO的几个简单练习
package grammar2;import java.io.*;import java.nio.charset.StandardCharsets;/** * @Deacription IO 相关几个练习 * @Author BarryLee * @Date 2019/10/20 8:48 */public class G03IOPractice { public st...原创 2019-10-20 10:07:42 · 258 阅读 · 0 评论 -
学习java的一些简单知识
1.使用dos命令编译和运行java程序 cmd进入运行窗口 javac 程序名.java java 程序名2.常用的软件3.java的数据类型 基本类型和引用类型 1)基本类型 整数类型(byte,short,int,long) 浮点数类型(float,double) 字符类型(char)原创 2017-09-17 21:06:12 · 273 阅读 · 0 评论 -
运算符的使用
取余运算符 取余运算符比较简单 下面写两个例子 1,int a = 100%3;int b = 100%-3;int c = -100%3;int d = -100%-3;a,b输出1,而c,d输出-1 说明取余运算是先进行绝对值的取余,然后再加上前面一个符号的2,定义今天是星期几,计算n天后是星期几private static String w[] = {"星期日","星期一","星原创 2017-09-24 10:20:16 · 277 阅读 · 0 评论 -
问号表达式与赋值符
赋值符int a = 10;a += a-= a *= a;a最后得到的是-80 原理: 赋值符号的左侧的a一直都是初始值 右侧是相应的运算结果 也就是先算到最右边是100 然后是10-100=-90 最后才是10+(-90)=-80问号表达式,一个面试题目 int a = 10; double b = 3.3; System.out.println(a>b?a:b原创 2017-09-24 10:44:27 · 1883 阅读 · 2 评论 -
switch case判断成绩等级
有很多判断成绩等级的方法 最常用的就是是使用if else 这里介绍使用switch case如何判断成绩等级 直接上代码了 public class Score { private static Scanner scanner; public static void main(String[] args) { scanner = new Scanner(S原创 2017-09-24 11:00:41 · 28327 阅读 · 1 评论 -
栈内存和堆内存的区别
**栈中的数据可共享,不可修改 堆中的数据可修改,不可共享**来个图片1,栈内存我们定义两个数据i,j int i = 10; int j = 10;当定义了第一个数据,栈内存将i指向数据10 然后再定义j的时候栈内存并没有重新写一个10,而是和i共享了10 这个数据 i++;执行这行代码的时候,栈内存再添加了一个数据11,10还在栈内存当中 i重新指向11,的、然后当我们原创 2017-09-28 23:08:48 · 363 阅读 · 0 评论 -
一个例子将java多态搞定
一个可以帮助你读懂多态的例子,程序有点小长,分四个案例讲述原创 2017-10-07 19:09:38 · 506 阅读 · 0 评论 -
Myeclipse快捷键
存盘 Ctrl+s(不会不知道吧) 注释代码 Ctrl+/ 取消注释 Ctrl+\(Eclipse3已经都合并到Ctrl+/了) 代码辅助 Alt+/ 快速修复 Ctrl+1 代码格式化 Ctrl+Shift+f 整理导入 Ctrl+Shift+o 切换窗口 Ctrl+f6 ctrl+shift+M 导入未引用的包 ctrl+w 关闭单个窗口 F3 跳转到转载 2017-10-07 20:06:17 · 1006 阅读 · 1 评论 -
类的抽象性知识点和示例
1,一个类继承了一个抽象类,需要实现父类的全部抽象方法或者声明为抽象类2,抽象类方法的作用:1)限制子类必须实现该方法,既然子类实现了该类的抽象方法,那么通过抽象父类就一定可以调用该方法(运行时多态)2)解决编译时多态3,如果一个类中包含抽象方法(没有方法体),那么这个类必须声明成抽象类。 抽象类不能实例化(new对象)。4,抽象类是当作多原创 2017-10-08 22:34:28 · 962 阅读 · 0 评论 -
幻方的思路与实现
import java.util.Scanner;/** * 幻方行数列数都是n n是奇数(3,5,7...) 每一行每一列以及斜对角的所有数加起来都是一样一样的 * * 规则就是:1在第一行的中间,n的倍数的下一个在其下方, * 如果是最后一行,就跳大第一行 其余的就在上一个的右上方, * 最后一列的就到第一列,第一行的就跳到最后一行 * * @author 逸川同学 * *原创 2017-10-01 10:00:58 · 938 阅读 · 0 评论 -
m到n 的和与重载的使用
1, 计算m到n 的和,首先想到的当然是利用for循环 不过我在这里提供一个公式,用来降低时间复杂度 详见代码 2, 方法重载: 1,只与方法名和参数列表有关 2,首先是精确匹配,然后是模糊匹配,但是不允许多个模糊匹配/** * 1,计算m到n的公式 * 2,方法重载 * @author 逸川同学 * */public class MtoN { public sta原创 2017-10-01 10:34:46 · 231 阅读 · 0 评论 -
数组的复制
public class CopyArray { public static void main(String[] args) { int[] a = { 2, 4, 6, 8, 1, 3, 5, 7 }; int[] b = new int[a.length]; // 将数组a 的一部分复制 到b // a数组的下标为2开始,原创 2017-10-01 10:43:17 · 183 阅读 · 0 评论 -
数组的原地排序和保护排序
import java.util.Arrays;public class SortArray { public static void main(String[] args) { //对数组进行原地排序 int[] a = { 2, 4, 6, 8, 1, 3, 5, 7 }; sort_1(a); print(a);原创 2017-10-01 10:53:52 · 601 阅读 · 0 评论 -
递归求斐波拉契数
import java.util.Scanner;/** * 1 1 2 3 5.... 求第n个 * * @author 逸川同学 * */public class Feibonacci { private static Scanner scanner; public static void main(String[] args) { scanner原创 2017-10-01 11:06:50 · 328 阅读 · 0 评论 -
不规则数组实现杨辉三角
import java.util.Scanner;/** * 不规则数组输出杨辉三角 * * @author 逸川同学 * 1 * 1 1 * 1 2 1 * 1 3 3 1 */public class YangHui { private static Scanner scanner; public static void main(String[] args)原创 2017-10-01 00:11:19 · 398 阅读 · 0 评论 -
java 中特殊的数据类型--string
/** * string 既可以作为基本数据类型 * 也可以作为用用数据类型 * @author 逸川同学 * */public class MyString { public static void main(String[] args) { //1,string作为基本数据类型 /* * 此时数据放在栈中,可以进行共享,不可以原创 2017-10-01 19:28:34 · 579 阅读 · 0 评论 -
JAVA 中的浮点数据类型
讲下float类型、float类型是32位的,16位的尾数,16位的阶码如果使用a表示尾数,b表示阶码,则尾数和阶码就可以组成 a*2^b 范围的浮点数,下面是示例代码 long lg = 10L; //int x = lg; //WA: 编译错误 float f = lg; //AC: float的精度比long还高 System.out.println( f )原创 2017-10-01 19:37:24 · 470 阅读 · 0 评论 -
适配器的使用与字符串的转换
public class MyAdapter2 extends Frame{ private static final long serialVersionUID = 1L; private TextField tfdChar; private TextField tfdCode; private Label label = new Label("原创 2017-10-27 00:01:15 · 333 阅读 · 0 评论 -
详谈java的构造方法和权限
1,java的构造方法1)什么是构造方法? 名字和类名完全一样,没有返回值(可理解为返回一个对象), 用new来调,调用的结果是在堆内存中创建一个对象空间且返回它的堆内存首地址public class MyDate_1 { private int year; private int month; private int day; //空参构造 public原创 2017-10-03 19:25:42 · 4806 阅读 · 1 评论 -
详谈java中的静态和非静态
1,静态的东西(成员变量或方法)是属于类的,非静态的东西是属于对象的静态的成员变量或方法使用static来表示,比如必须要的main 方法,就是static的我们来分析一下他们的区别和联系1)静态方法和变量是属于类(模板)的,而不是对象2)静态方法和变量可以直接通过类名来调用,而不是通过new 一个对象来调用的3)非静态的方法和变量可以调用静态的,反之就不可以了(因为静态的原创 2017-10-04 22:09:36 · 226 阅读 · 0 评论 -
如何理解java中的浅拷贝和深拷贝
我们并不希望在编程中遇到浅拷贝,那么,怎么做到深拷贝呢浅拷贝,也就是在拷贝构造中存在引用赋值,出现捆绑现象,而捆绑会使我们的数据出现一系列的问题 比如这里有一个Person类:public class Person { private String name; private MyDate birth; public Person(String name, MyDate bi原创 2017-10-04 22:44:46 · 259 阅读 · 0 评论 -
面向对象的异常处理机制
1,从安全的角度来讲,面向过程的异常处理是更为安全的,因为面向过程是事前处理,而面向对象是事后处理。从编程和理解的角度来讲,面向对象的处理方式更为方便易懂,因为他是正常代码和处理异常分开的,从而使程序具有处理错误的能力。2,另一方面面向过程语言错误处理方式是有缺陷的:1)不进行范围检查(数据范围错误,如数组下标越界) 2)采用if语句进行事先判断以防止出现错误。原创 2017-10-19 23:14:40 · 474 阅读 · 0 评论 -
java小项目之金额转中文大写(Swing)
数字转换为中文金额需要一定的小技巧,也可以看成是一个小小的ACM题目来做,这里结合Swing 界面来完成public class Main { public static void main(String[] args) { MoneyFrame moneyFrame = new MoneyFrame(); moneyFrame.setVisible(true); }}im原创 2017-10-28 23:52:05 · 431 阅读 · 0 评论 -
java小项目之用户信息添加
java GUI小项目之用户信息添加,实现一个简单的添加与数据封装功能,界面没有美化,如图原创 2017-10-29 10:45:41 · 7141 阅读 · 0 评论 -
Map接口笔记
Map接口中的API: 以键值对形式存在 key-value 将键映射到值的对象。 一个映射不能包含重复的键;每个键最多只能映射到一个值。 此接口是 Java Collections Framework 的成员。 put(key,value) 添加键值对 get(ke原创 2017-10-30 23:36:04 · 280 阅读 · 0 评论 -
面向对象的特点
抽象,封装,继承,多态 继承:extends关键字表示两个类之间的关系 1.子类继承父类,继承父类中所有的非私有化的属性和方法 2.构造方法不能继承 3.默认编译器提供一个无参的构造,如果显示提供有参的构造则编译器 不会再提供无参的构造 4.子类中的构原创 2017-10-30 23:27:23 · 153 阅读 · 0 评论 -
自动装箱与自动拆箱
/* * JDK1.5后出现的特性,自动装箱和自动拆箱 * 自动装箱: 基本数据类型,直接变成对象 * 自动拆箱: 对象中的数据变回基本数据类型 * 方便使用 * 自动装箱和拆箱弊端,可能出现空指针异常 */public class IntegerDemo_2 { public static void main(String[] args) { functi原创 2017-10-30 23:50:58 · 199 阅读 · 0 评论 -
面向接口思想笔记
1,接口的本质接口本身就是一钟完全抽象类,也就是说,里面的方法全部都是抽象方法,里面的变量全是常量2,接口的定义接口也是一个类,不过使用interface来进行声明,里面的方法与抽象方法一样,没有方法体public interface Area { public abstract double area(); //可以省略:public abstract原创 2017-10-13 14:48:15 · 228 阅读 · 0 评论 -
JDBC连接数据库(statement)
1,连接数据库之前的操作在数据库可视化软件新建一个连接;新建一个数据表;在数据表创建数据(id设置为自增长)2,JDBC操作数据库的步骤1.注册驱动 告知JVM使用的是哪一个数据库的驱动2.获得连接 使用JDBC中的类,完成对MySQL数据库的连接3.获得语句执行平台 通过连接对象获取对SQL语句的执行者对象4.执行sql语句原创 2017-11-02 17:42:27 · 482 阅读 · 0 评论 -
内部类与内部接口
1,用法:public class Line //直线类,外层类型{ …… class Point{ //点类,内嵌类型 …… } ……}2,作为类型的特性:1)内嵌类型不能与外层类型同名。2)内部类中可以声明成员变量和成员方法。3)内部类可原创 2017-10-14 23:37:49 · 1618 阅读 · 0 评论 -
解读java9新特性
就在今年九月二十一号,也就是2017年9月21日,java9正式发布了,这应该是一个很多程序员所关注的事情。那么,java9到底有哪些值得了解的新特性呢?1,java9的核心变化java9的核心变化就是引入了一种新的Java编程组件,也就是模块化。大家都知道,java已经是老人家级别的语言了,从1995年到如今,jdk的版本升级使得它的功能愈发完善,但是这也导致了API原创 2017-10-15 18:36:21 · 1163 阅读 · 1 评论 -
利用JFrame挂菜单栏演示
1,面板挂菜单栏2,菜单栏挂菜单3,菜单挂菜单项4,菜单项添加监听5,菜单项可以再添加子菜单import java.awt.Container;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.原创 2017-11-02 19:19:30 · 2130 阅读 · 0 评论 -
再谈连接数据库
(本文主要讲解的是:1如何防止数据库的注入,2,如何实现DBUtils,3,第三方工具类QueryRunner的使用)1.防止数据库的注入java作为企业级开发语言,你总能感受到它与数据库之间的紧密联系。前面已经写过一遍关于statement 连接数据库的文章:JDBC连接数据库(statement)当然了,statement只是其中一种初级的连接方式,在以前是会有原创 2017-11-08 16:58:11 · 336 阅读 · 0 评论 -
事件监听的三种方法
1.实现事件监听,总的来讲就是有三个步骤 1)事件源注册事件监听器 -- 事件源.addXXXListener( obj ) ,obj称为监听者 2 ) 实现监听器接口 --obj所属的类实现XXXListener接口 3)实现监听器接口中的抽象方法 --在obj所属的类中写监听器接口中的抽象方法 2.具体来讲有三个方法:1)监听注册,实现接口,实现接口的方法原创 2017-10-26 22:47:32 · 4518 阅读 · 0 评论