
java
文章平均质量分 72
xiha_zhu
这个作者很懒,什么都没留下…
展开
-
分布式事务
CAP理论CAP理论又叫布鲁尔定理,是Consistency, Availability, Partition Tolerance三个单词的缩写。CAP理论是指在分布式系统中,一致性、可用性、分区容错性三个要素不能同时满足。当前一般是通过最终一致性来提高系统的性能,通过使用多节点之间的数据异步复制技术来实现集群化的数据一致性。传统SQL数据库事务是满足ACID的强事务机制,NoSQL系统注重性能和扩展性,而非事务机制,仅提供对行级别的原子性保证,也就是说同时对同一个key下的数据进行的两个操作,在原创 2021-05-19 17:32:01 · 117 阅读 · 0 评论 -
缓存击穿、雪崩、穿透
随着互联网的越来越普及,用户越来越多,系统性能瓶颈成了越来越热门的话题。要解决性能问题的技术手段有很多,比如:缓存、CDN加速、页面静态化、集群、分布式、异步等。缓存通常被作为首先技术方案,简单而且提升效果明显,它能够将速度提升100倍。那么问题来了,缓存为啥会怎么快呢?因为传统的数据库操作是基于磁盘的,而缓存是基于内存的,内存操作和磁盘操作的速度根本不是一个数量级的。目前市面上主流的缓存有:redis和memcache,这两个都是基于内存的缓存技术,二者的区别我在这里暂时不讲。使用缓存的伪代码..转载 2021-04-23 10:56:47 · 137 阅读 · 0 评论 -
消除if...else
public interface IWind { void wind();}@Servicepublic class EastWind implements IWind { @Override public void wind() { System.out.println("===东风吹啊吹==="); }}@Servicepublic class WestWind implements IWind { @Override .转载 2021-04-22 10:47:58 · 139 阅读 · 0 评论 -
正则表达式
java中正则(Regular Expression)使用String类中matches方法 public boolean matches(String regex) { return Pattern.matches(regex, this); }Pattern中matches方法 public static boolean matches(String regex, CharSequence input) { Pattern p =.原创 2021-03-03 12:19:55 · 1720 阅读 · 3 评论 -
Eureka注册中心搭建&简单调用
Eureka注册中心搭建Eureka ServerEureka ClientApplication Service 服务提供方,注册到Eureka Server中的服务Application Client 服务消费方,通过Eureka Server发现服务,并消费原创 2021-01-26 15:54:57 · 407 阅读 · 0 评论 -
java语言中有没有goto关键字
goto是java语言中的保留字,目前还没有在java中使用。 其实goto这个词是C语言中的,goto语句通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能。而在结构化程序语言中一般不主张使用goto语句, 以免造成程序流程的混乱,使理解和调试程序都产生困难。但是在java语言中,goto这个词只是作为了保留字,还没有使用。那是因为java语言讲究简单,...转载 2018-03-26 23:19:35 · 1864 阅读 · 0 评论 -
final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。例如,对于如下语句: final StringBuffer a=new StringBuffer("immutable"); 执行如下语句将报告编译期错误: a=new StringBuffer(""); 但是,执行如下语句则可以通过编译: ...转载 2018-03-28 22:51:28 · 201 阅读 · 0 评论 -
"=="和equals方法究竟有什么区别?
主要区别:==是操作符而equals是方法,==习惯用于对比原生类型而equals()方法比较对象的内容相等性。==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,...转载 2018-03-28 22:51:15 · 266 阅读 · 0 评论 -
静态变量和实例变量的区别
在语法定义上:静态变量前要加static关键字,而实例变量前则不加。在程序运行时:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量;静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变...转载 2018-03-28 22:51:03 · 137 阅读 · 0 评论 -
是否可以从一个static方法内部发出对非static方法的调用?
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方 法调用,而static方法调用时不需要创建对象,可以直接调用。 public class Test01 { public static String a ="静态成员变量"; public String b = "非静态成员变量"; public void eat(...转载 2018-03-28 22:50:46 · 621 阅读 · 0 评论 -
Java容器
List接口实现类:ArrayList:基于数组。使用无惨构造函数时是在第一次添加元素时初始化容量为 10 的。ArrayList有查询快、增删慢的特点;LinkedList:基于双向链表来存储数据。分配的内存不必是连续的,每个元素存储本身内存地址的同时,还会存储下一个元素的地址。LinkedList有查询慢、增删块的特点;Vector:同ArrayList也是基于数组。Vector和A...原创 2018-03-27 00:13:00 · 548 阅读 · 1 评论 -
Iterator接口
Iterator接口也是Java集合框架的成员,但它与Collection系列、Map系列的集合不一样:Collection系列集合和Map系列的集合主要用于盛装其他对象,而Iterator则主要用于遍历集合的元素。又叫迭代器。Iterator接口隐藏了各种Collection实现类的底层细节,只向应用程序提供遍历集合元素的统一编程接口。Iterator接口定义了三个方法:boolea...转载 2018-03-27 00:12:07 · 537 阅读 · 0 评论 -
Java中对象和引用对象
Case cc; //在栈内存里面开辟了空间给引用变量cc,这时cc=null'''cc=new Case();1. new Case()在堆内存里面开辟了空间给Case类的对象,这个对象没有名字2. Case()随即调用了Case类的构造函数3. 把对象的地址在堆内存的地址给引用变量cc Java对象和引用的关系可以说是互相关联,却又彼此独立。彼此独立主要表现在:引用是...原创 2018-03-27 00:10:55 · 939 阅读 · 0 评论 -
设计一个一百亿的计算器
首先要对计算机原理的底层细节要清楚、要知道加减法的位运算原理和知道计算机中的算术运算会发生越界的情况,两个数值的运算结果不能超过计算机中的该类型的数值范围;二是要具备一定的面向对象的设计思想。 要实现一个一百亿的计算器,我们得自己设计一个类可以用于表示很大的整数,并且提供了与另外一个整数进行加减乘除的功能,大概功能如下: 1)这个类内部有两个成员变量,一个表示符号,另一个用字节数组表示数值...原创 2018-03-26 23:40:01 · 444 阅读 · 0 评论 -
最有效率的计算方法算出2乘以8等于几
将一个数左移n位,就相当于乘以了2的n次方。 那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高。所以,2乘以8等於几的最效率的方法是 ...转载 2018-03-26 23:38:36 · 3564 阅读 · 0 评论 -
char型变量中能不能存储一个中文汉字
char型变量是用来存储Unicode编码的字符的,unicode编码字符集中包含了汉字,所以,char型变量中可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在unicode编码字符集中,那么,这个char型变量中就不能存储这个特殊汉字。补充说明:一个字符的 Unicode 编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对 Unico...原创 2018-03-26 23:36:23 · 9891 阅读 · 0 评论 -
short s1 = 1; s1 += 1;和short s1 = 1; s1 += 1;
short s1 = 1; s1 = s1 + 1; 由于s1+1运算时会自动提升表达式的类型,所以结果是int型,再赋值给short类型s1时,编译器将报告需要强制转换类型的错误。 short s1 = 1; s1 += 1; 由于 += 是java语言规定的运算符,java编译器会对它进行特殊处理,因此可以正确编译。...转载 2018-03-26 23:27:25 · 205 阅读 · 0 评论 -
switch语句能否作用在byte上,能否作用在long上,能否作用在String上
在switch(xxx)中,xxx只能是一个整数表达式或者枚举常量,整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。long和String类型都不符合switch的语法规定,并且不能被隐式转换成int类型,所以,它们不能作用于swtich语句中。 ...原创 2018-03-26 23:24:47 · 601 阅读 · 0 评论 -
int和Integer
int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el...转载 2018-03-28 22:50:38 · 162 阅读 · 0 评论 -
Math.round(11.5)等於多少? Math.round(-11.5)等於多少
Math类中提供了三个与取整有关的方法:ceil、floor、round,这些方法的作用与它们的英文名称的含义相对应,例如,ceil的英文意义是天花板,该方法就表示向上取整,所以,Math.ceil(11.3)的结果为12,Math.ceil(-11.3)的结果是-11;floor的英文意义是地板,该方法就表示向下取整,所以,Math.floor(11.6)的结果为11,Math.floor(...转载 2018-03-28 22:50:29 · 2049 阅读 · 0 评论 -
我的第一次(勿喷)
没想到可以这么差给这么一张表:要求找出有两科成绩都大于60的学生然后我愣是没做出来。。。。。。。。。。。。。。。。。。。只有写出这道题才可以做笔试题,然后才可以参加面试。。。我连笔试题卷子都没看到就OUT啦啦啦啦啦啦啦啦啦啦 啦啦啦,啦啦啦, 我是卖报的小行家, ...原创 2018-05-05 12:14:32 · 240 阅读 · 0 评论 -
导出Excel遇到的几个问题
后台java关键代码 HSSFWorkbook workbook = new HSSFWorkbook(); //新建一个工作空间 HSSFSheet sheet = workbook.createSheet("sheetName"); //新建行 HSSFRow row = sheet.createRow(0); //为该行单元格赋值 row.createCell(0).setCe...原创 2018-12-29 00:41:28 · 581 阅读 · 0 评论 -
Eclipse启动报错:A Java Runtime Environment(JRE) or Java Development Kit(JDK) must be available in order.
找eclipse配置文件eclipse.ini-startupplugins/org.eclipse.equinox.launcher_1.3.201.v20161025-1711.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.401.v20161122-1740-pro...原创 2018-11-29 23:06:01 · 542 阅读 · 2 评论 -
Java was started but returned exit code=13
换了个eclipse neon版本,64位的。然后启动就会报这个错误,启动不了。 应该是64位的eclipse和我之前用的32的jdk冲突造成的。下载个64的jdk,配置下path就解决了...原创 2018-06-02 20:39:30 · 231 阅读 · 0 评论 -
Eclipse中运行Maven打包编译时出现:Perhaps you are running on a JRE rather than a JDK?
出现错误后,查看了许多网友的解决方式,但都没有解决我遇到的问题,可能是情况还是有些许的不同;下面直接说说我的问题的解决办法,希望对大家有所帮助;Eclipse中Maven报错信息如下:本以为可能是Eclipse配置Maven没配置好,或者是jdk和jre环境出现问题,后来在cmd窗口找到maven目录,输入mvn clean compile也输出同样的错误,大致阅读了一下,说的是执行编译失...转载 2018-08-24 22:20:55 · 2489 阅读 · 0 评论 -
中文执行sql插入数据库后乱码
执行show variables like “character%”;Variable_name Valuecharacter_set_client utf8character_set_connection utf8character_set_database utf8character_set_filesystem binarycharacter_set_results utf8c...原创 2018-11-18 13:09:37 · 854 阅读 · 0 评论 -
Java常见转义符
\n 换行\r 回车\t Tab(制表符)\\ 代表 \\’ 代表 ’\" 代表 \"\0 代表空字符NULLjava中的路径需要"C:\ProgramFile"用".“作为分割符的话需要"6.21”.split("\."); 首先’\\‘转为’\’,然后’\.‘原创 2018-11-21 21:43:32 · 1013 阅读 · 0 评论 -
SpringBoot异常处理
在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业务层的处理过程,还是控制层的处理过程,都不可避免会遇到各种可预知的、不可预知的异常需要处理。每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。那么,能不能将所有类型的异常处理从各处理过程解耦出来,这样既保证了相关处理过程的功能较单一,也实现了异常信息的统一处理和维护?答案是肯定的。下面将介绍使用Sprin...原创 2018-04-24 07:41:55 · 1393 阅读 · 0 评论 -
Spring的AOP原理
一、什么是 AOP AOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为(日志、安全、事务)的时候,OOP则显得无能为力。也就是说,OOP允许你定...转载 2018-04-06 00:27:18 · 844 阅读 · 0 评论 -
JSP九大内置对象
类型 javax.servlet.ServletRequest request 请求对象 类型 javax.servlet.SrvletRequest 作用域Page response 响应对象 类型 javax.servlet.SrvletResponse 作用域Page pageContext 页面上下文对象 类型 jav...原创 2018-03-28 22:49:44 · 137 阅读 · 0 评论 -
Java Web中get和post请求
1. GET提交的数据会在地址栏中显示出来,不安全;而POST提交,请求数据存在请求正文中,相对安全。2. GET提交时,传输数据就会受到URL长度的限制,所有只能提交少量数据;POST可以提交大量数据。 一般在浏览器中输入网址访问资源都是通过GET方式;在FORM提交中,可以通过Method指定提交方式为GET或者POST,默认为GET提交Http定义了与服务器交互的不同方法,最...原创 2018-03-25 20:54:51 · 741 阅读 · 0 评论 -
Spring事务管理
Spring事务的本质其实就是数据库对事务的支持,使用JDBC的事务管理机制,就是利用java.sql.Connection对象完成对事务的提交。在没有Spring帮我们管理事务之前,service层的代码:Connection conn = DriverManager.getConnection();try { conn.setAutoCommit(false); ...原创 2018-04-05 18:30:35 · 177 阅读 · 0 评论 -
cookie和session
Cookie和session都是跟踪浏览器用户身份的会话方式Cookie数据保存在客户端,保存数据不安全且存储数据量有限;session数据保存在服务器端,保存数据安全且存储数量大,session基于cookie进行存储。Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cooki...原创 2018-03-25 20:53:07 · 125 阅读 · 0 评论 -
Java中跳出当前的多重嵌套
在Java中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break 语句,即可跳出外层循环。例如,ok:for(int i=0;i<10;i++){ for(int j=0;j<10;j++) { System.out.println(“i=” + i + “,j=” + ...转载 2018-03-26 23:23:35 · 156 阅读 · 0 评论 -
java 中 &和&&
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如if(str != null && !str.equals(“”))表达式,...原创 2018-03-26 23:21:27 · 238 阅读 · 0 评论 -
Tomcat部署项目的几种方式
一、静态部署1、直接将web项目文件件拷贝到webapps 目录中 Tomcat的Webapps目录是Tomcat默认的应用目录,当服务器启动时,会加载所有这个目录下的应用。所以可以将JSP程序打包成一个 war包放在目录下,服务器会自动解开这个war包,并在这个目录下生成一个同名的文件夹。一个war包就是有特性格式的jar包,它是将一个web程序的所有内容进行压缩得到。2、在server...转载 2018-05-09 10:51:29 · 411 阅读 · 0 评论 -
当我们说线程安全时,到底在说什么
Java进阶(二)当我们说线程安全时,到底在说什么发表于 2016-06-13 |更新于 2017-02-15 |分类于 java| 评论次数0|阅读次数 21633|字数 4,027提到线程安全,可能大家的第一反应是要确保接口对共享变量的操作要具体原子性。实际上,在多线程编程中我们需要同时关注可见性、顺序性和原子性问题。本篇文章将从这三个问题出发,结合实例详解volatile如何保证可见性及一定...转载 2018-04-20 14:43:21 · 220 阅读 · 0 评论 -
Netty——基本使用介绍
1.为什么选择Netty上一篇文章我们已经了解了Socket通信(IO/NIO/AIO)编程,对于通信模型已经有了一个基本的认识。其实上一篇文章中,我们学习的仅仅是一个模型,如果想把这些真正的用于实际工作中,那么还需要不断的完善、扩展和优化。比如经典的TCP读包写包问题,或者是数据接收的大小,实际的通信处理与应答的处理逻辑等等一些细节问题需要认真的去思考,而这些都需要大量的时间和经历,以及丰富...转载 2018-05-09 00:28:32 · 391 阅读 · 0 评论 -
OOP
OOP:Object Oriented Programming,面向对象的程序设计。所谓“对象”在显式支持面向对象的语言中,一般是指类在内存中装载的实例,具有相关的成员变量和成员函数(也称为:方法)。面向对象的程序设计完全不同于传统的面向过程程序设计,它大大地降低了软件开发的难度,使编程就像搭积木一样简单,是当今电脑编程的一股势不可挡的潮流。OOP达到了软件工程的三个主要目标:重用性、灵活性和扩展...原创 2018-04-20 06:24:36 · 5537 阅读 · 1 评论 -
lamba表达式
lamba表达式原创 2018-04-05 14:57:52 · 332 阅读 · 0 评论