自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

wppi的博客

java菜鸟一枚,梦想翱翔蓝天!

  • 博客(70)
  • 资源 (5)
  • 收藏
  • 关注

原创 在一个二叉查找树中插入一个节点

题目:给定一棵二叉查找树和一个新的树节点,将节点插入到树中。 你需要保证该树仍然是一棵二叉查找树。给出如下一棵二叉查找树,在插入节点6之后这棵二叉查找树可以是这样的: 2 2 / \ / \1 4 --> 1 4 / / \ 3 3 6需要搞...

2019-04-11 21:56:27 2518

原创 Object类中有哪些方法

1 package java.lang; 2 3 public class Object { 4 5 private static native void registerNatives(); 6 static { 7 registerNatives(); 8 } 9 10 public final native Class&...

2019-03-13 12:04:02 1232

原创 mybatis缓存机制详解

mybatis提供了缓存机制减轻数据库压力,提高数据库性能mybatis的缓存分为两级:一级缓存、二级缓存一级缓存是SqlSession级别的缓存,缓存的数据只在SqlSession内有效二级缓存是mapper级别的缓存,同一个namespace公用这一个缓存,所以对SqlSession是共享的一级缓存:mybatis的一级缓存是SqlSession级别的缓存,在操作数据库的时候需要先创...

2019-03-03 15:44:06 337

原创 mysql数据库的锁有多少种,mysql中怎么加锁

一、概述数据库锁定机制简单来说,就是数据库为了保证数据的一致性,而使各种共享资源在被并发访问变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁定机制,所以MySQL自然也不能例外。MySQL数据库由于其自身架构的特点,存在多种数据存储引擎,每种存储引擎所针对的应用场景特点都不太一样,为了满足各自特定应用场景的需求,每种存储引擎的锁定机制都是为各自所面对的特定场景而优化设计,所以各存...

2019-03-03 15:09:45 14632

原创 高并发常见的面试题

1. 什么是进程进程是指运行中的应用程序,每个进程都有自己独立的地址空间(内存空间)。比如用户点击桌面的IE浏览器,就启动了一个进程,操作系统就会为该进程分配独立的地址空间。当用户再次点击左边的IE浏览器,又启动了一个进程,操作系统将为新的进程分配新的独立的地址空间。目前操作系统都支持多进程。2. 什么是线程进程是表示自愿分配的基本单位。而线程则是进程中执行运算的最小单位,即执行处理机调度...

2019-02-28 23:45:06 48457 2

原创 spring boot web开发

上篇文章介绍了Spring boot初级教程:spring boot(一):入门篇,方便大家快速入门、了解实践Spring boot特性;本篇文章接着上篇内容继续为大家介绍spring boot的其它特性(有些未必是spring boot体系桟的功能,但是是spring特别推荐的一些开源技术本文也会介绍),对了这里只是一个大概的介绍,特别详细的使用我们会在其它的文章中来展开说明。web开发sp...

2018-12-20 18:13:06 179

原创 springboot(一):入门篇

什么是spring bootSpring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是spring boot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架使...

2018-11-23 00:51:42 155

原创 springMVC中的注解@RequestParam与@PathVariable的区别

@PathVariable①、@PathVariable绑定URI模板变量值②、@PathVariable是用来获得请求url中的动态参数的③、@PathVariable用于将请求URL中的模板变量映射到功能处理方法的参数上。//配置url和方法的一个关系@RequestMapping(“item/{itemId}”)/* @RequestMapping 来映射请求,也就是通过它来指定控制...

2018-11-23 00:33:49 156

原创 在同一直线上的最大点个数

在一个给定的n个点的平面,找到最多有多少个点在同一直线上。思路:首先计算出重合的点个数val1在计算出垂直的点个数val2再利用map 集合存储斜率与个数。最后比较求出最大值。import java.util.*;public class Solution { public int maxPoints(Point[] points) { int len=poin...

2018-11-08 15:39:03 412

原创 逆波兰表示法

评估算术表达式在逆波兰表示法中的价值。有效运算符是+,-,*,/。每个操作数可以是整数或另一个表达式。一些例子:["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9["4", "13", "5", "/", "+"] ->

2018-11-08 15:32:16 261

原创 二叉树根结点到叶节点的最短距离

给定一棵二叉树,找出它的最小深度。最小深度是沿着从根节点到最近叶节点的最短路径的节点数目。思路一:递归。当节点左右子树都为null时,返回0当左子树为null,返回右子树递归+1;当右字数为null,返回左子树递归+1;当左右子树都不为空,返回左右子树递归最小值。public class Solution { public int run(TreeNode root) {...

2018-11-08 00:41:13 3646

原创 高并发的解决方案

1.应用和静态资源分离刚开始的时候应用和静态资源是保存在一起的,当并发量达到一定程度的时候就需要将静态资源保存到专门的服务器中,静态资源主要包括图片、视频、js、css和一些资源文件等,这些文件因为没有状态所以分离比较简单,直接存放到响应的服务器就可以了,一般会使用专门的域名去访问。2.页面缓存页面缓存是将应用生成的页面缓存起来,这样就不需要每次都生成页面了,从而可以节省大量的CPU资源,如...

2018-10-16 23:50:27 184

原创 sql优化的几种方法

在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where...

2018-10-16 00:04:22 184

原创 Java并发——线程池Executor框架

什么是线程池?线程池的概念大家应该都很清楚,帮我们重复管理线程,避免创建大量的线程增加开销。若采用"为每个任务分配一个线程"的方式会存在一些缺陷,尤其是当需要创建大量线程时:①、线程生命周期的开销非常高②、资源消耗③、稳定性引入线程池任务是一组逻辑工作单元,线程则是使任务异步执行的机制。当存在大量并发任务时,创建、销毁线程需要很大的开销,运用线程池可以大大减小开销。Executor...

2018-10-15 23:32:30 191

原创 Java中通过ThreadLocal实现线程绑定来传递参数

ThreadLocal的基本理解Threadlocal很多地方都叫线程本地变量,也有很多地方叫线程本地存储,个人理解在业务上方法调用方法时都是在单线程中进行操作,在进行访问数据库时牵扯到事务操作时,因为要求要做到事务的start transaction()和commit()操作都需要同一个connection来执行,而恰巧我们的connection是从线程池中调用的。因此,我们不能保证我们进行事...

2018-10-12 23:37:08 5561 1

原创 Objects的hash()和hashCode()比较

Objects类是Java jdk 1.7开始引入的This class consists of static utility methods for operating on objects. These utilities includenull-safe or null-tolerant methods for computing the hash code of an object, ...

2018-10-12 16:36:08 5180

原创 Set 对存储对象集合去重,需要重写equals和hashcode

昨天遇到对象去重问题,想当然用Set存储对象,debug的时候发现个数还是没变,所有的都存进来了,百度了一会发现Set是需要重写equals和hashcode的。@Override public boolean equals(Object obj) { if(this==obj){ return true; } if...

2018-10-12 16:32:16 1312

原创 如何控制线程执行的顺序?

如何控制线程执行的顺序?先来一段多线程执行的代码。public class Test { public static void main(String[] args) { Thread t1 = new Thread(new MyThread1()); Thread t2 = new Thread(new MyThread2()); Th...

2018-10-10 22:40:14 201

原创 Synchronized与ReentrantLock的区别

java在编写多线程程序时,为了保证线程安全,需要对数据同步,经常用到两种同步方式就是Synchronized和重入锁ReentrantLock。相似点:这两种同步方式有很多相似之处,它们都是加锁方式同步,而且都是阻塞式的同步,也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问该同步块的线程都必须阻塞在同步块外面等待,而进行线程阻塞和唤醒的代价是比较高的(操作系统需要在用户态与内核态之...

2018-10-09 23:52:47 298

原创 链表环与入口问题

给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。假设x为环前面的路程(黑色路程),a为环入口到相遇点的路程(蓝色路程,假设顺时针走), c为环的长度(蓝色+橙色路程)当快慢指针相遇的时候:此时慢指针走的路程为Sslow = x + m * c + a快指针走的路程为Sfast = x + n * c + a2 Sslow = Sfast2 * ( x + m...

2018-10-09 22:55:49 139

原创 redis持久化的几种方式

Redis是一种高级key-value数据库。它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富。有字符串,链表,集 合和有序集合。支持在服务器端计算集合的并,交和补集(difference)等,还支持多种排序功能。所以Redis也可以被看成是一个数据结构服务器。Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每...

2018-10-09 20:11:50 94

原创 Redis为什么使用单进程单线程方式也这么快

Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。Redis快的主要原因是:1、完全基于内存2、数据结构简单,对数据操作也简单3、使用多路 I/O 复用模型第一、二点不细讲,主要围绕第三点采用多路 I/O 复用技术来展开。多路 I/O...

2018-10-09 19:56:23 229

原创 Eclipse中查看及调整JVM堆内存大小

一、查看堆内存设置路径:Windows > Pregerences > General 勾选右侧窗口的show heap status一项 点击 ok,即可在eclipse右下方看到实时的heap情况二、调整堆内存进入eclipse程序文件夹,打开名称为eclipse.ini的配置文件进行编辑,按需添加或修改如下两项设置:#当堆内存的余量小于40%时,JVM会将内存扩大到...

2018-10-08 11:28:38 2907

原创 HashMap桶中链表转红黑树为什么选择数字8?

在JDK8及以后的版本中,HashMap引入了红黑树结构,其底层的数据结构变成了数组+链表或数组+红黑树。添加元素时,若桶中链表个数超过8,链表会转换成红黑树。 翻了一下HashMap的源码,发现其源码中有这样一段注释:Because TreeNodes are about twice the size of regular nodes, we use them only when bins c...

2018-10-08 11:13:16 2262

原创 创建对像实例的5种方式

1、使用new关键字Dog jack = new Dog();2、使用Class类的newInstance方法Class dogClass = Dog.class; //拿到class Dog的 Class实例对象Dog rose = (Dog) dogClass.newInstance(); //调用Class的实例方法 newInstance()创建Dog的实例对象3、使用Con...

2018-10-07 18:41:27 260

原创 JDBC数据库连接池的必要性

1.JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤: 在主程序(如servlet、beans)中建立数据库连接、进行sql操作、断开数据库连接。这种模式开发,存在的问题:(1)普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费0.05...

2018-10-07 17:25:26 357

原创 同步和异步,区别

同步:同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。异步:将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉...

2018-10-04 21:56:59 2564

原创 负载均衡

1.什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。(一)HTTP...

2018-10-04 11:31:00 148

原创 java为什么要重写hashCode和equals方法

如果不被重写(原生)的hashCode和equals是什么样的?不被重写(原生)的hashCode值是根据内存地址换算出来的一个值。不被重写(原生)的equals方法是严格判断一个对象是否相等的方法 (object1 == object2)。为什么需要重写equals和hashCode方法?在我们的业务系统中判断对象时有时候需要的不是一种严格意义上的相等,而是一种业务上的对象相等。在这种...

2018-10-04 10:02:37 442

原创 mysql去重

1、使用distinct去重(适合查询整张表的总数)有多个学校+教师投稿,需要统计出作者的总数select count(author) as total from files每个作者都投稿很多,这里有重复的记录。select distinct author from files;有可能两个学校的教师姓名相同,结果只统计一个,出错。select distinct author,sid ...

2018-10-03 15:17:36 2022

原创 redis详解-面试篇

使用redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)(2) 支持丰富数据类型,支持string,list,set,sorted set,hash(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期...

2018-09-28 12:51:16 126

原创 Get和post的区别

get参数通过url传递,post放在request body中。get请求在url中传递的参数是有长度限制的,而post没有。get比post更不安全,因为参数直接暴露在url中,所以不能用来传递敏感信息。get请求只能进行url编码,而post支持多种编码方式get请求会浏览器主动cache,而post支持多种编码方式。get请求参数会被完整保留在浏览历史记录里,而post中的参数不...

2018-09-28 11:22:47 99

原创 static关键字的四种使用场景

static关键字主要有以下四种使用场景:1、修饰成员变量和成员方法2、静态代码块3、修饰类(只能修饰内部类)4、静态导包(用来导入类中的静态资源,1.5之后的新特性)修饰成员变量和成员方法(最常用)被static修饰的成员属于类,不属于单个这个类的某个对象,被类中所有对象共享,可以并且建议通过类名调用调用格式:类名.静态变量名类名.静态方法名()用public修饰的static成员...

2018-09-27 17:48:04 3557

原创 Hash算法解决冲突的方法

Hash算法解决冲突的方法一般有以下几种常用的解决方法1, 开放定址法:所谓的开放定址法就是一旦发生了冲突,就去寻找下一个空的散列地址,只要散列表足够大,空的散列地址总能找到,并将记录存入公式为:fi(key) = (f(key)+di) MOD m (di=1,2,3,……,m-1)※ 用开放定址法解决冲突的做法是:当冲突发生时,使用某种探测技术在散列表中形成一个探测序列。沿此序列逐个单...

2018-09-27 17:35:07 416

原创 短信验证

本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了。在使用前需要注册,注册地址为http://sms.webchinese.cn/reg.shtml),下面是程序源码:package ly.wpp;import org.apache.commons.httpclient.Header;import org.apac...

2018-09-24 18:39:26 240

原创 自旋锁与互斥锁的区别

自旋锁(Spin lock)自旋锁与互斥锁有点类似,只是自旋锁不会引起调用者睡眠,如果自旋锁已经被别的执行单元保持,调用者就一直循环在那里看是 否该自旋锁的保持者已经释放了锁,"自旋"一词就是因此而得名。其作用是为了解决某项资源的互斥使用。因为自旋锁不会引起调用者睡眠,所以自旋锁的效率远 高于互斥锁。虽然它的效率比互斥锁高,但是它也有些不足之处:    1、自旋锁...

2018-09-22 12:38:51 507

原创 java static方法不能被重写原因

重写方法的目的是为了多态,或者说:重写是实现多态的前提,即重写是发生在继承中且是针对非static方法的。语法上子类允许出现和父类只有方法体不一样其他都一模一样的static方法,但是在父类引用指向子类对象时,通过父类引用调用的依然是父类的static方法,而不是子类的static方法。即:语法上static支持重写,但是运行效果上达不到多态目的class Father {public s...

2018-09-17 18:43:52 5160 3

原创 java中静态变量与非静态变量的区别

静态变量与非静态变量的区别如下:1.内存分配静态变量在应用程序初始化时,就存在于内存当中,直到它所在的类的程序运行结束时才消亡;而非静态变量需要被实例化后才会分配内存。2.生存周期静态变量生存周期为应用程序的存在周期;非静态变量的存在周期取决于实例化的类的存在周期。3.调用方式静态变量只能通过“类.静态变量名”调用,类的实例不能调用;非静态变量当该变量所在的类被实例化后,可通过实...

2018-09-17 18:33:36 1702

原创 使用c3p0连接池

1.JDBC数据库连接池的必要性在使用开发基于数据库的web程序时,传统的模式基本是按以下步骤:  在主程序(如servlet、beans)中建立数据库连接。进行sql操作断开数据库连接。这种模式开发,存在的问题:普通的JDBC数据库连接使用 DriverManager 来获取,每次向数据库建立连接的时候都要将 Connection 加载到内存中,再验证用户名和密码(得花费...

2018-09-12 18:42:25 316

原创 如何将自己本地的项目传到github上

只需要命令就可以把本地的项目上传到自己的github上。。步骤如下:1.登陆自己的github账号,如下图所示 2.点击new repository进行创建一个新的仓库,用来存放自己的项目; 3.也是最重要的部分,用命令将项目上传;1.cd 到上传项目的根目录下,然后初始化本地仓库,git init2.添加当前工作目录文件到index,添加管理,git add .(...

2018-09-09 17:03:12 710

net自动排课系统

net自动排课系统完整源码(适合智慧校园) 可以使用!

2019-04-21

C#自动排课系统

C#自动排课系统+算法++源码 功能详细,包括代码、算法的讲解!

2019-04-21

Java发送短信验证码

使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求,调用短信平台提供的接口(遵循短信平台的接口规范即可)发送短信验证码!亲测可用!给出例子,欢迎下载!

2019-04-13

oracle.jar包下载

oracle.jar包下载,内含有oracl.jar5和oracle.jar6两个包,下载可用。

2018-01-13

用mysql编写的二手交易系统

用java代码和mysql编写的小型二手交易系统,代码包含数据库语句,下载可用。

2018-01-12

空空如也

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

TA关注的人

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