- 博客(42)
- 收藏
- 关注
原创 Web开发概述
2021/4/6 0-开发基础1file:///C:/Users/Administrator/Desktop/webMVC/0-开发基础1.html 1/8Web开发概述web应用概述WEB在英语中web即表示蜘蛛网的意思,它用于表示Internet主机上(服务器)供外界访问的资源Web应用程序是一种可以通过Web访问的应用程序。Web应用程序的一个最大好处是用户很容易访问应用程序。用户只需要有浏览器即可,不需要再安装其他软件。应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也
2021-04-06 20:50:41 196
原创 正则表达式
正则表达式类型Object,是一套字符串的匹配规则,通常用于字符串格式校验、字符串内容过滤等。注意:正则是按位匹配的。正则的创建方式(1)字面量创建://表示正则对象,//间写正则规则var reg = /a/g;//去字符串中匹配字符"a"console.log(reg);(2)系统提供的构造方法RegExp创建正则对象参数有两个,都是string类型1.表示正则规则的内容,就相当于//中间的内容2.表示正则规则的修饰,i、gvar reg = new RegExp(“a”,“g”)
2021-03-26 19:56:33 308
原创 乐观锁及其实现原理,synchronized和ReentrantLock的区别
乐观锁总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本机号或CAS操作实现。version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据时,version值会加一。在提交更新时若刚才读到的version值为当前数据库中的version值相等时才更新,否则重试更新操作直到成功。CAS操作方式:即co
2021-03-08 21:23:20 412 1
原创 Synchronized 及其原理
1、synchronized作用原子性:synchronized保证语句块内操作是原子的可见性:synchronized保证可见性(通过“在执行unlock之前,必须先把此变量同步回主内存”实现)有序性:synchronized保证有序性(通过“一个变量在同一时刻只允许一条线程对其进行lock操作”)2、synchronized的使用修饰实例方法,对当前实例对象加锁修饰静态方法,多当前类的Class对象加锁修饰代码块,对synchronized括号内的对象加锁二、实现原理1、jvm基于进入
2021-03-08 21:13:01 327
原创 用集合模拟打扑克(挖坑)
package com33;import java.util.ArrayList;import java.util.List;import java.util.Objects;import java.util.Random;public class T10{ static List<Card> list = new ArrayList<>(); static Random r = new Random(); static List&l
2021-03-04 21:23:19 373 1
原创 java 中 Hashmap 容量的初始化
HashMap使用HashMap(int initialCapacity)对集合进行初始化。在默认的情况下,HashMap的容量是16。但是如果用户通过构造函数指定了一个数字作为容量,那么Hash会选择大于该数字的第一个2的幂作为容量。比如如果指定了3,则容量是4;如果指定了7,则容量是8;如果指定了9,则容量是16。现在来测试一下://测试容量 //设置初始化容量为9,结果自动计算 为16 。 Map<String , String> map3 = new HashMap<
2021-02-26 11:27:17 729
原创 Map接口
哈希表就是一种以键-值(key-indexed)存储数据的结构,只要输入待查找的值即key,即可查到其对应的值。哈希的思路就是,如果所有的键hashCode都是整数,那么久可以使用一个简单数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。简单的计算方法hashcode%数组长度=【0,数组的长度-1】。它提供了一组键值的映射。其中存储的每个数据对象都有一个响应的键key,键决定了值对象在Map中的存储位置。键应该是唯一的,不允许重复,每个key只能映射一个value。Map
2021-02-25 21:31:42 86
原创 set 接口
set 接口特点:无序,不允许重复,是Collection接口的子接口所有的方法都是Collection接口中所定义的方法实现类HashSet存储采用哈希表的方式进行存储,HashSet采用HashCode算法来存取集合中的元素,因此具有比较好的读取和查找性能LinkedHashSet是在HashSet的基础上添加一个额外的链表结构可以记录存储数据的顺序TreeSet采用的是树状结构进行数据存储HashSet类定义public class Hshsetextends AbstractS
2021-02-24 21:33:21 92
原创 输入输出流
1、流模型流就是对输入输出的一个封装,用于屏蔽具体物理目标的差异性在Java程序中,对于数据的输入输出操作以流Stream方式进行,JavaSE提供各种各样的类用于使用相同的方法获取不同类型的数据java.io包通过数据流、序列化和文件系统为用户提供一种完成I/O操作的输入/输出流流的分类操作方式BIO同步阻塞I/O模式,数据的读取写入必须阻塞在一个线程内等待其完成NIO即同步非阻塞,一个线程不断的轮询每个输入输出的状态改变,如果有状态发生了改变,则进行下一步的操作AIO即异步非阻塞I/O模
2021-02-18 20:58:31 274
原创 遍历一个文件中的所有字符
CharNum类package com.dd;public class CharNum implements Comparable<CharNum>{ private char count ; //字符 private int num =1; //出现次数 public CharNum(char count) {//重载构造方法 this.count=count; } public char getCount() { return count; }
2021-02-04 22:50:46 240
原创 遍历c盘下的所有文件和文件夹
package com.dd2;import java.io.File;public class T1 { public static void main(String[] args) { File file = new File("C://QMDownload"); pp(file); } private static void pp(File file) { if (file != null) { if (file.isFile()) { System.out.p
2021-02-04 22:42:11 1042
原创 1+2+3+...+1000 ,分10个线程来执行
package com.dan3;import java.util.concurrent.Callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.Future;import java.util.concurrent.FutureTask;public class T1 { public static void main(String[] args) throws Exceptio
2021-02-04 20:39:21 306
原创 创建线程的四种方法
第一种package com.dan2;public class T1 { public static void main(String[] args) { System.out.println(Thread.currentThread()); Thread t1= new A1(); t1.start(); }}class A1 extends Thread{ @Override public void run() { for(int i=0;i<10;i+
2021-02-04 20:25:45 67
原创 java 文件的拆分与合并
拆分package com.work;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Arrays;public class Test1 { public static void main(String[]
2021-01-26 14:04:31 231
原创 文件文件夹
package H0121A;import java.io.File;public class C { public static void main(String[] args) { final String cc = "/"; File ff = new File(cc); String [] arr = ff.list(); for(String temp:arr) { File f1 = new File(cc,temp); if(f1.isDirectory(
2021-01-21 21:30:56 64
原创 装饰器模式
装饰器模式 Decorator Pattern允许向一个现有的对象添加新的功能,同时又不改变其结构。 这种类型的设计模式属于结构型模式,它时作为现有的类的一个包装。意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀优点:装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能缺点:多层装饰比
2021-01-21 21:16:53 56
原创 异常处理
java异常处理程序运行时发生的不被期望的事件,它阻止了程序按照程序员的预期正常执行,这就是异常。异常发生时,是任程序自生自灭,立刻退出终止。出错的处理方式以前正常流程代码和问题处理代码相结合。现在将正常流程代码和问题处理代码分离,以提高阅读性。其实异常就是Java通过面向对象的思想将程序中的问题封装成了对象,用异常类对其进行描述。1、不同的问题用不同的类进行具体的描述。2、问题很多,意味着描述的类也很多,将其共性进行向上抽取就形成了异常体系关键字Java异常处理的关键字有throws、th
2021-01-21 20:57:08 84
原创 输入一个数,找出这个数的所有质因子
输入一个数,找出这个数的所有质因子package com.Exception;import java.util.Iterator;import java.util.Scanner;import java.util.TreeSet;public class PrimeNum { //baseString是接收最终拼接好的质因子的字符串 private static String baseString; public static void main(String[] args) { S
2021-01-20 22:32:58 1146
原创 接口
使用关键字interface定义接口package com.fei;public interface huiFei { public void qiFei(); public void feiXing(); public void luoDi();}抽象类中的抽象方法不能省略abstract关键字,但是接口中的方法声明可以添加abstract,也可以不写。接口不能直接使用,必须有对应的实现类。//如果当前类不是抽象类,则必须实现接口中的所有抽象方法package com.fei;
2021-01-19 22:30:33 88
原创 模版模式
package com.moban;public abstract class BubbleSort {// public final void sort(Object[]arr) { for(int i = 1;i<arr.length;i++) { for(int k=0;k<arr.length-i;k++) { if(bigger(arr[k],arr[k+1])) { Object temp = arr[k]; arr[k]=arr[k+
2021-01-19 22:10:25 116
原创 继承(总结)
继承继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域或方法,或子类从父类继承方法,使得子类具有父类相同的行为。继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。继承是is-a的相互关系继承的优点将所有子类的共同属性放入父类,实现代码共享,避免重复,提高开发效率可以使得修改扩展继承而来的实现比较简单继承的缺陷父类变,子类就必须变继承破坏了封装,对于父类而言,它的实现细节对与子类来说都是透明
2021-01-13 20:02:18 145
原创 猜数字游戏
随机一个1-1000的数,输入一个数进行猜数字游戏,大于随机的数返回“大了”,小于随机的数返回“小了”,直到猜对了返回“猜对了”。package W0112.com;import java.util.Random;public class C { private Integer a = 0; public C() { Random r = new Random(); a = r.nextInt(1000); System.out.println(a); } pub
2021-01-12 21:02:14 163
原创 面试题
1、请解释Java语言的跨平台特性。解析:虽然不知道什么是跨平台也可以使用Java语言进行编程,但是对于一个Java编程员来说,理解跨平台特性能够更深入掌握Java语言,所以企业中往往要求应聘者至少理解这个特性。参考答案:Java的跨平台特性也被称为可移植性、平台无关性,或者一次编写处处运行。他的意思就是如果用Java语言编写一个应用,那么就可以在不同平台上运行,而不需要为不同平台单独运行开发。之所以能实现跨平台的特性。主要得益于Java虚拟机(JVM),JVM解释器在运行Java应用时根据当前平台进行
2021-01-12 09:51:30 160
原创 java 数组
数组是表示多个相同类型变量的集合(在一个数组中所存放的所有元素的类型必须一致),可以使用共同的名字引用它属于引用数据类型特点:由类型相同的元素组成的有顺序的数据集合Java数组是固定的不能扩展[长度一旦声明,不能修改]可以存储基本数据类型或对象数组可以定义为任意数据类型,并且可分为一维数组或多维数组一维数组一维数组实质上是相同类型变量的列表。要创建一个数组必须首先定义数组变量所需的类型。通用的一维数组的声明格式是:type var-name[ ];int []arr = new [10
2021-01-08 21:01:36 298
原创 java递归 小结
方法的概念多次反复编写明显是不合适的,而结构化编程中的模块化在java中的体现就是自定义方法。方法可以理解为一个命名的代码块,通过名称就可以重复使用这段代码,而不需要反复书写,可以达到代码重用的目的方法可以有参数,也可以没有参数;方法可以有返回值,也可以没有返回值[必须声明返回值为void]方法定义的具体位置没有关系,可以先写调用【会有报错】,然后定义方法也可以;先写定义后调用也可以。调用方式常见的有三种单独调用。这种方式无法使用方法的返回值。格式:方法名称(参数值);打印调用。这种方式可以
2021-01-07 21:10:18 115
原创 java算法题(3)
1.一个1-100000的整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?public class WanShu { public static void main(String[] args) {// 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? for(int i =1;i<100000;i++) { boolean b1 = wanshu(i+100); if(b1) {
2021-01-06 20:21:07 121
原创 java 方法概念的总结
方法的概念引用也叫句柄,类似于指针,但是和指针是不同的。指针是一个存放地址的变量,使程序员可以灵活的访问内存,由于可以对指针进行任意的运算操作,所以给程序带来了安全隐患和意想不到的结果。引用继承了指针节省内存的优点,但是限制了对地址的操作,它是安全的。Java中所有的变量都是一个引用,java中没有指针的概念方法可以理解为一个命名的代码块,通过名称就可以重复使用这段代码,而不需要反复书写,可以达到代码重用的目的方法可以有参数,也可以没有参数;方法可以有返回值,也可以没有返回值定义一个方法:对于定
2021-01-05 20:22:57 81
原创 算法练习题(2)
1.判断一个数是否为质数 int k= 11; boolean bb =true; for(int i=2;i<k/2;i++){ if(k%i==0){ bb =false; break; } } if(bb) { System.out.println(k+"是质数"); } else { System.out.println("不是质数"); }1.5 判断 101-500 哪些是质数for(int k
2021-01-05 20:07:17 142
原创 java 算法练习题(1)
1、今有鸡翁一,值钱伍;鸡母一,值钱三;鸡鶵三,值钱一。凡百钱买鸡百只,问鸡翁、母、鶵各几何? (百钱买百鸡问题) 假设 公鸡为a,母鸡为b,小鸡为c,先写出判断条件 。 int a,b,c ; a+b+c =100; //三种鸡一共100只 5*a +3*b +c/3 == 100 //三种鸡一共100块钱 c%3==0 //小鸡最少买3只 for(int a=1;a<=20;a++) { //公鸡最多2
2021-01-04 20:46:34 250
原创 运算符,分支语句,循环语句
类型转换的方法parseInt()把string类型转化为int类型valueOf()把string类型转化为integer类型toString()把引用类型转化为字符串类型计算机中的数据存储方式原码: 最高位为符号位,1表示负数,0为整数反码:反码跟原码是正数时一样;负数时,反码就是原码符号位除外,其他位按位取反补码:补码跟原码是正数时一样;负数时,补码就是原码符号位除外,其他位按位取反java运算符算术运算符+、-、、/、%、++、–赋值运算符=、+=、-=、=、/=、%=
2021-01-03 23:57:16 111
原创 Math.round() 四舍五入方法
Java中Math.round()方法是将浮点数“四舍五入”转换成整数的方法,但这里的“四舍五入”和数学中的四舍五入有点差别,接下来就来解析一下在Java里的原理。1、首先直接上测试代码:public static void main(String[] args) {System.out.println(Math.round(12.4));System.out.println(Math.round(12.5));System.out.println(Math.round(12.9));Syste
2020-12-30 16:30:12 2242
原创 ~ 按位取反运算
(按位取反)运算的理解:按照我平时的理解,当我使用按位取反运算的时候,计算机会将操作数所对应的二进制表达式的每一个位进行取反计算,取反后所得到的值就是按位取反的运算结果(这点没问题)例如,假如我的计算机是32位的,我接下来要计算~5的值,计算过程如下:5 的二进制表达式为:0000 0000 0000 0000 0000 0000 0000 0101执行运算,即5后: 1111 1111 1111 1111 1111 1111 1111 1010,即结果为-6以上过程没有任何问题,但我们如果忘记了
2020-12-30 16:27:30 2692 1
原创 java标示符、关键字、变量、数据类型(及转换)
标示符Java 中标识符是为方法、变量或其他用户定义项所定义的名称。标识符可以有一个或多个字符。在 Java 语言中,标识符的构成规则如下。标识符由数字(09)和字母(AZ 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。另外,Java区分大小写加粗样式编码规范:类名首字母大写,方法名、变量名首字母小写。提示:标识符命名时,
2020-12-29 21:27:04 257
原创 在linux下创建编写一个java文件
上一篇已经在linux(centos7)中装好了jdk 并配好了环境变量,现在来写一个简单的java代码1.打开终端找到jdk的目录cd /usr/local/jdk1.8.0_191/java2.创建一个java文件并编辑vi Hello.java3.i编辑内容,写代码public class Hello{public static void main(String[]args){System.out.println("你好");}}ESC退出编辑, :wq保存退出4. javac
2020-12-28 20:38:08 2885 4
原创 LinuxCentOS7安装jdk1.8.0_191
可以使用lrzsz上传或者使用xshell自助工具上传下载好的文件,或者直接在linux中使用wget命令或者使用图形化界面中的firefox浏览器下载文件1.先卸载系统自带的OpenJDK和java文件java -version 查看自带的jdk信息rpm -qa|grep java 查看已有的jdk文件,会出来以下相似的jdk文件java-1.7.0-openjdk-headless-1.7.0.191-2.6.15.5.el7.x86_64java-1.7.0-openjdk-
2020-12-28 20:07:02 634
原创 centOS7安装WPS并中文输入
按ESC键 跳出vi的编辑命令,然后::w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件,并退出viq: 不保存文件,退出vi:q! 不保存文件,强制退出vi:e! 放弃所有修改,从上次保存文件开始再编辑...
2020-12-24 19:44:46 281
原创 关于linux drwxr-xr-x和-rwxrwxrwx 的权限总结
权限的计算是除去第一位字母开始,权限都是三个符号为一组合,其中-表示没有这个权限这里总共会有10个“-”,第一个表示文件类型,如该文件是文件(-表示),文件夹(d表示),连接文件(l表示),后面9个按照三个一组分,如:-rwxrwx— 770权限表示此文件(文件夹)的拥有着和同组用户有读写及执行权限,其他用户组没任何权限就是前面三个表示所有者权限,中间三个表示同组用户权限,最后一组表示其他用户权限ls -l也可以简写成ll 以列表的形式显示当前路径下文件(或文件夹不包括隐藏文件)的详细信息Li
2020-12-24 10:11:51 3624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人