自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 redis内存回收机制

内存回收redis中的每个对象都由一个redisObject表示,redisObject的type属性和ptr属性才是指向底层实现数据结构的指针。在redisObject中还维护了一个refcount属性用于引用计数,当对象被创建时,引用计数初始化为1,当对象被新程序使用时refcount+1,当不再被某个程序使用时,refcount-1,当该值为0时,对象所占用的内存就会被回收。引用计数除了...

2019-12-01 17:35:56 141

原创 redis的数据类型

redis的数据类型redis支持5种数据类型(对象)。分别是字符串(String)、列表(list)、哈希(hash)、集合(set)、有序集合(zset/sorted set)。redis中的键和值都是一个对象。redis使用引用计数实现内存回收,当一个对象不再被使用时,会被回收。每个对象也会记录最后一次被访问的时间,可用于计数空转时间(回收算法为lru时有用)字符串String...

2019-10-19 16:59:44 75

原创 浅谈HashMap

版本jdk1.7.0_06引入​ HashMap是java中常用的集合类之一,几乎每个程序员都知道它,也会在不经意间使用到它。HashMap常会被用来与Hashtable和ConcurrentHashMap作比较。在弄清它们的区别前,首先应该了解下各个类底层究竟是怎么实现的。本文就来谈谈HashMap的实现原理。​ HashMap在jdk1.7和jdk1.8的实现上有较大...

2019-05-19 16:02:19 146

原创 抽象类与接口的区别

什么是抽象类在java中,使用abstract修饰的类就是一个抽象类。如下就是一个抽象类:/** * 抽象类 */public abstract class A { /** * 抽象类中可以有成员变量,可以有常量 */ private int a; public int b; int c; String str; ...

2018-03-18 23:08:21 302

原创 继承和组合的区别

什么是继承继承是面向对象三大基本特征之一(继承,封装,多态),继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。在java中通过关键字extends实现继承,java中所有类默认都是java.lang.Object的子类。继承强调的是is-a关系。 直接通过例子来了解继承:/** * 动物 */pub...

2018-03-18 23:03:32 8330 3

原创 java中的代理模式(Proxy)

代理模式介绍什么是代理模式代理模式:为其他对象提供一种代理以控制对这个对象的访问; 代理模式的好处:在目标对象的基础上,去添加额外的功能操作,而不修改原先的业务方法。让业务方法去专注于自己的业务逻辑。代理模式让我们可以去扩展目标对象的功能。 通俗点,就是有个代理人去帮我们处理琐碎的事情。 代理模式的分类代理模式主要分为: 1、静态代理:由工具或者开发者手动生成代理源代码

2018-01-11 16:49:35 414

原创 java中的fail-fast(快速失败)机制

引入在前面介绍ArrayList的扩容问题时对于modCount的操作没有详细说明,该变量的操作在add,remove等操作中都会发生改变。那么该变量到底有什么作用呢?简介fail-fast 机制,即快速失败机制,是java集合(Collection)中的一种错误检测机制。当在迭代集合的过程中该集合在结构上发生改变的时候,就有可能会发生fail-fast,即抛出ConcurrentMo

2017-10-30 16:38:06 18341 7

原创 浅谈ArrayList动态扩容

环境:eclipse,jdk1.8简介ArrayList实现了List接口,继承了AbstractList,底层是数组实现的,一般我们把它认为是可以自增扩容的数组。它是非线程安全的,一般多用于单线程环境下(与Vector最大的区别就是,Vector是线程安全的,所以ArrayList 性能相对Vector 会好些),它实现了Serializable接口,因此它支持序列化,能够通过序列化传输

2017-10-23 22:54:24 50285 21

原创 浅谈Java泛型中的<? extends E>和<? super E>的区别

引入再说这个之前,先来看一段代码:假设有这么几个类及其继承关系,后面的例子也用这几个类作为基础示范class People { //人}class Man extends People { //男人}class Woman extends People { //女人}class Boy extends Man { //男孩}

2017-09-23 21:50:30 2136 2

原创 哈夫曼树与哈夫曼编码

哈夫曼树哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。在这个二叉树中,只有叶子节点才是有效的数据节点,其他只是作为路径而构造的。带权路径长度又称WPL,树的带权路径长度,就是树中所有的叶结点的权值乘上其到根结点的路径长度,即树中所有叶节点的带权路径长度之和。WPL= (W1*L1+W2*L2+W3*L3+...+Wn*Ln), N个权值Wi(i=1,2,...n)构成一

2017-09-22 22:15:47 557

原创 mybatis中的#和$的区别

简介    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。     动态 sql

2017-09-22 22:10:18 14338 1

原创 死锁的定义、产生原因、必要条件和处理方法

死锁的定义在一组进程发生死锁的情况下,这组死锁进程中的每个进程,都在等待另一个死锁进程所占有的资源。死锁的定义如下:如果一个进程中的每一个进程都在等待仅该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。死锁的产生原因死锁的起因,通常是源于多个进程对资源的争夺,不仅对不可抢占资源进行争夺或引起死锁,而且对可消耗资源进行争夺也会引起死锁。总结如下:1、系统资源不足;2、

2017-09-20 23:31:22 847

原创 java中非静态内部类可以有常量但不能有staic修饰的属性

先看下面的代码:package com.howard.test;/** * java中非静态内部类不能有staic修饰的属性,但可以有常量 * 2017年9月12日 * @author hongwu */public class Test2 { public static void main(String[] args) { int a;

2017-09-20 23:24:02 423

原创 最大奇约数

package com.howard.algorithm.test;import java.util.Scanner;/** * 小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题: 定义函数f(x)为x最大的奇数约数,x为正整数。 例如:f(44) = 11. * 现在给出一个N,需要求出 f(1) + f(2) + f(3).......f(N) *

2017-08-31 22:05:48 238

原创 java中创建对象的几种方法

这是前段时间在某本书上看到的文章,具体是什么书名我也忘了。只记得当时做了记录。最常见的就是通过new的方式来创建对象,这种方式通过调用构造方法来完成。除此之外,还有以下三种方式可以创建对象。方法1:通过调用对象的clone方法package com.howard.demo.constructobject;/** * 不通过new方式创建对象 方法1: * 调用对象的clone

2017-08-31 21:42:17 447

原创 交错01串

package com.howard.algorithm.test;import java.util.Scanner;/** * [编程题] 交错01串 * 时间限制:1秒 * 空间限制:32768K * 如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。 * 小易现在有一个01串s,

2017-08-31 21:26:32 321

原创 数字翻转

package com.howard.algorithm;import java.util.ArrayList;import java.util.List;import java.util.Scanner;/** * [编程题] * 时间限制:1秒 * 空间限制:32768K * 对于一个整数X,定义操作rev(X)为将X按数位翻转过来,并且去除掉前导0。例如: * 如果 X

2017-08-31 21:11:05 232

原创 优雅的点

package com.howard.algorithm;import java.util.Scanner;/** * 优雅的点 * 时间限制:1秒 * 空间限制:32768K * 小易有一个圆心在坐标原点的圆,小易知道圆的半径的平方。小易认为在圆上的点而且横纵坐标都是整数的点是优雅的,小易现在想寻找一个算法计算出优雅的点的个数,请你来帮帮他。 * 例如:半径的平方如果为25 *

2017-08-31 21:07:49 199

转载 Nginx配置文件nginx.conf详解

#定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /var/log/nginx/error.log info;#进程文件pid /var/run

2017-07-31 11:45:06 299

原创 nginx反向代理和负载均衡

一、反向代理      通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中由代理 服务器向Internet上的web服务器发起请求,最终达到客户机上网的目的。      而反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内

2017-07-28 20:32:35 578 1

原创 nginx虚拟主机的配置

一、说明      虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。在nginx安装目录下的conf文件夹里,有个nginx.conf的配置文件,该文件是nginx的配置文件该文件下,可以看到:其中一个se

2017-07-28 20:12:45 758

原创 nginx的安装和配置

一、什么是nginx   Nginx是一个使用c语言开发的高性能的http服务器及反向代理服务器。   Nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师Igor Sysoev所开发,官方测试nginx能够支支撑5万并发链接,并且cpu、内存等资源消耗却非常低,运行非常稳定。二、nginx的应用场景1、htt

2017-07-28 20:04:33 408

原创 mysql数据库导入sql过大的解决办法

如果你在导入sql的脚本文件时,如果出现“ MySQL server has gone away”,那么很有可能一个原因是sql文件比较大。这时候的解决办法可以是:mysql有个默认的参数:max_allowed_packet该参数默认大小是 1048576,即1M( 1048576 /1024/1024)可以通过下面的sql语句查询你当前的max_allowed_packet的大

2017-07-20 15:51:09 6962 1

转载 Java基础之- 强引用、弱引用、软引用、虚引用

1、强引用(StrongReference)         强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:[java] view plain copy print?Object o=new Object();   //  强引用        当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryErr

2017-07-16 22:38:28 248

原创 http状态码

1**:请求收到,继续处理 2**:操作成功收到,分析、接受 3**:完成此请求必须进一步处理 4**:请求包含一个错误语法或不能完成 5**:服务器执行一个完全有效请求失败  100——客户必须继续发出请求 101——客户要求服务器根据请求转换HTTP协议版本  200——交易成功 201——提示知道新文件的URL 202——接受和处理、但处理未完成 203——返回信

2017-05-31 23:29:46 280

原创 mybatis执行insert实体后返回主键

有时候在使用mybatis进行插入数据时,希望可以在插入数据后返回该新插入数据的主键,可以通过如下两种方式实现:1、在insert标签里添加如下标签: SELECT LAST_INSERT_ID() AS id其中:keyProperty的值必须在实体里提供setter方法,这样返回的主键会自动赋值。2、通过为insert添加属性: us

2017-05-30 22:02:45 1747

原创 linux下查看mysql相关路径以及配置不区分大小写方法

查看mysql的相关安装路径:ps -ef|grep mysql包括mysql的安装路径,数据库存放路径,运行路径等。除了这个方式,还可以输入该命令查看:whereis mysql对于my.cnf文件的位置,在/etc/下。linux系统和window系统对于mysql数据库的大小写敏感度默认是不同的,linux区分大小写

2017-05-26 16:35:42 510

原创 hadoop分布式集群的搭建

1、实验目的与环境1.1实验目的搭建hadoop分布式集群1.2实验环境Linux版本:Centos6.5Jdk版本:jdk7Hadoop版本:hadoop2.6使用工具:SecureCRT,vmware122、步骤2.1配置网络环境(1)安装完成三台centos机器后,为它们分别配置网络环境。虚拟机网络配置选用vmn

2017-05-13 09:18:01 435

原创 二叉树常见概念、性质、问题以及操作

参考书籍:数据结构C语言-严蔚敏、吴伟民 Java程序员面试宝典-何昊等参考链接:http://www.cnblogs.com/bmrs/archive/2010/08/19/SloveTree.html二叉树的基本概念度:结点所拥有的子树的数目称为该结点的度。叶结点:度为0的结点称为叶结点。分支结点:度不为0的结点称为分支结点。一个树除叶结点外,其余都是分支结点。

2017-04-22 21:24:41 527

原创 判断一个数是否为2的n次方

参考书籍:算法设计与分析基础 Java程序员面试宝典-何昊等package com.Howard.test11;/** * 判断一个数是否为2的n次方 * @author Howard * 2017年4月15日 */public class IsPower { /** * 利用移位 这里的左移相当于乘以2 * 时间复杂度O(logn) * @param n

2017-04-20 21:06:49 1354

原创 求数组中两两相加等于某个数的组合种数

参考书籍:算法设计与分析基础  Java程序员面试宝典-何昊等package com.Howard.test11;import java.util.Arrays;/** * 求int数组中两两相加等于某个数的组合种数 * @author Howard * 2017年4月15日 */public class FindSumInArray { /** * 方法1: *

2017-04-20 21:01:29 3815

原创 链表的常用操作(java实现)

参考书籍:数据结构c语言-严蔚敏、吴伟民  Java程序员面试宝典-何昊等结点:package com.Howard.test11.LinkedList;/** * 链表结点 * @author Howard * 2017年4月9日 */public class Node { Node next = null; int data; public Node(int da

2017-04-20 20:55:07 465

原创 java8新特性之函数式接口、lambda表达式、接口的默认方法、方法和构造函数的引用

函数式接口     当接口里只有一个抽象方法的时候,就是函数式接口,可以使用注解(@FunctionalInterface)强制限定接口是函数式接口,即只能有一个抽象方法。例如:public interface Integerface1 { void test();}上面的接口只有一个抽象方法,则默认是函数式接口。interface Integerfa

2017-04-14 20:51:23 11357 1

原创 给定一个整数,输出这个整数二进制表示中1的个数

参考书籍:计算机组成原理-蒋本珊 java程序员面试宝典-何昊等问题:给定一个数,输出这个数二进制表示中1的个数。package com.Howard.test11;/** * 给定一个整数 输出这个整数二进制表示中1的个数 * 例如:7二进制111 则输出3 * @author Howard * 2017年4月5日 */public class CountOne { /*

2017-04-09 00:04:01 1014

原创 数据库三范式的简单理解

参考书籍:数据库系统概论第四版-王珊、萨师煊数据库范式范式的级别      设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。      目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF

2017-04-08 23:58:15 34499 8

原创 js中单引号双引号的处理

这几天在项目中遇到要动态添加li标签并且要给该标签添加点击事件同时传入ajax获取到的数据,这就需要与单引号和双引号同时打交道,由于我js技术还不是很好,这对我来说比较麻烦,后来百度找到了解决办法。这里记录下解决方法。 2017 1-12 10:55 --> 由于函数传入参数时是带了单引号的,所以需要处理 for (var i = 0; i < data.length; i

2017-03-28 23:51:29 1941

原创 jq中获取某ul下所有li的文本值

最近在做项目时遇到需要遍历某个ul下的li并重新拼接,这里记录下获取ul下li的方法。 2017 1-12 10:55 --> 想要获取上面ul下的所有文本值,这里通过函数实现,通过调用该函数即可获取方法如下: function last() { $(".down-box").each(

2017-03-28 23:46:21 30000 2

原创 数据库事务、特性以及隔离级别

数据库的事务事务的基本概念所谓事务,是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分隔的工作单位。事务通常以bigin transaction开始,以commit或rollback结束。commit表示提交开启事务后的所有操作,即将事务中的所有对数据库的更新操作写回到物理磁盘中去,事务正常结束。rollback表示回滚,即在事务过程中发生了某些错误或

2017-03-24 22:22:17 244

原创 mybatis实现saveOrUpdate

mybatis实现saveOrUpdate最近在做项目过程中遇到需要更新或者插入的问题,就想起hibernate有个saveOrUpdate的方法,想着mybatis是不是也有这个方法。于是上网查找资料。该问题有两种解决方案。方法1:使用mybatis的标签<insert id="saveOrUpdate" > <selectKey keyProperty="count" resultType=

2017-03-24 22:19:16 8561 1

原创 html的<a>标签点击触发js函数的3种方法

方法1我是a标签方法2我是a标签方法3我是a标签然后使用jq的方法通过id获取并设置点击函数:$("#fun").click(function(){ fun();});

2017-03-16 15:38:26 25447

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