- 博客(88)
- 资源 (1)
- 收藏
- 关注
转载 Redis简介
本文主要内容Redis与其他软件的相同之处和不同之处Redis的用法使用Python示例代码与Redis进行简单的互动使用Redis解决实际问题Redis是一个远程内存数据库,它不仅性能强劲,而且还具有复制特性以及为解决问题而生的独一无二的数据模型。Redis提供了5种不同类型的数据结构,各式各样的问题都可以很自然地映射到这些数据结构上:Redis的数据结构致力于帮助用
2017-10-25 09:56:01 427
转载 控制反转(IOC)和依赖注入(DI)的区别
IOC inversion of control 控制反转DI Dependency Injection 依赖注入要理解这两个概念,首先要搞清楚以下几个问题:参与者都有谁?依赖:谁依赖于谁?为什么需要依赖? 注入:谁注入于谁?到底注入什么?控制反转:谁控制谁?控制什么?为何叫反转(有反转就应该有正转了)?依赖注入和控制反转是同一概念吗?
2017-10-25 09:53:13 397
转载 DI之循环依赖 ——spring
3.2.1 什么是循环依赖 循环依赖就是循环引用,就是两个或多个Bean相互之间的持有对方,比如CircleA引用CircleB,CircleB引用CircleC,CircleC引用CircleA,则它们最终反映为一个环。此处不是循环调用,循环调用是方法之间的环调用。如图3-5所示: 图3-5 循环引用 循环调用是无法解决的,除非有终结条件
2017-10-25 09:50:54 427
转载 it工程师常用英文自我介绍常用用语
Good morning ! It is really my honor to have this opportunity for an interview, I hope i can make a good performance today. I'm confident that I can succeed. Now i will introduce myself
2017-10-25 09:43:39 4305
转载 TCP/IP协议三次握手与四次握手流程解析
一、TCP报文格式 TCP/IP协议的详细信息参看《TCP/IP协议详解》三卷本。下面是TCP报文格式图:图1 TCP报文格式 上图中有几个字段需要重点介绍下: (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。 (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+
2017-10-25 09:30:27 357
转载 Cookie/Session机制详解
会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。本章将系统地讲述Cookie与Session机制,并比较说明什么时候不能用Cookie,什么时候不能用Session。1.1 Cookie机制
2017-10-25 09:25:57 272
转载 中缀表达式求值问题
中缀表达式的求值问题是一个比较常见的问题之一,我们通常在编写程序时,直接写出表达式让编译器去处理,很少去关心编译器是怎么对表达式进行求值的,今天我们来一起了解一下其中具体的原理和过程。 表达式一般来说有三种:前缀表达式、中缀表达式、后缀表达式,其中后缀表达式又叫做逆波兰表达式。中缀表达式是最符合人们思维方式的一种表达式,顾名思义,就是操作符在操作数的中间。而前缀表达式和后缀表达式中操作符
2017-10-25 09:24:35 1657
转载 JAVA8 十大新特性详解
一、接口的默认方法Java 8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫做扩展方法,示例如下:复制代码代码如下:interface Formula { double calculate(int a); default double sqrt(int a) { retur
2017-10-24 16:33:20 256
转载 判断一个图是否有环 无向图 有向图
一、无向图:方法1:如果存在回路,则必存在一个子图,是一个环路。环路中所有顶点的度>=2。 n算法: 第一步:删除所有度 第二步:将度数变为1的顶点排入队列,并从该队列中取出一个顶点重复步骤一。 如果最后还有未删除顶点,则存在环,否则没有环。 n算法分析: 由于有m条边,n个顶点。
2017-10-24 16:29:34 2350
转载 Java语言与C语言混合编程(2)--在Java中调用C语言本地库
阅读目录一. 什么是JNI二. 编写带有native声明的方法的java类三. 使用javac命令编译所有的java类四. 使用javah命令生成.h文件五. 使用C/C++实现本地方法六. 将C/C++编写的文件生成动态链接库 在上一篇文章中介绍了Java语言中的native关键字,以及Java语言调用C语言的编译生成本地动态链接库(DLL)实现加法运算的小例子,本文通过一个更
2017-10-20 13:35:08 661
转载 Java语言与C语言混合编程(1)--Java native 关键字
阅读目录一. 什么是 native Method二. 为什么要使用 native Method三. JVM怎样使 native Method 跑起来四. Native关键字示例:Java调用C语言本地库五. 使用批处理文件编译运行程序回到顶部一. 什么是 native Method 简单地讲,一个 native Method 就是一个java调用非java代码
2017-10-20 13:34:15 3709
转载 装饰者模式
装饰者模式Decorator模式(别名Wrapper):动态将职责附加到对象上,若要扩展功能,装饰者提供了比继承更具弹性的代替方案。 意图:动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 设计原则:1. 多用组合,少用继承。利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都
2017-10-20 13:32:15 285
转载 SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)
最近公司在招人,同事问了几个自认为数据库可以的应聘者关于库连接的问题,回答不尽理想~现在在这写写关于它们的作用假设有如下表:一个为投票主表,一个为投票者信息表~记录投票人IP及对应投票类型,左右连接实际说是我们联合查询的结果以哪个表为准~1:如右接连 right join 或 right outer join:我们以右边voter表为准,则左表(voteMaster
2017-10-20 09:50:00 367
转载 sql中自连接的使用
一、用SQL自连接查询处理列之间的关系SQL自身连接,可以解决很多问题。下面举的一个例子,就是使用了SQL自身连接,它解决了列与列之间的逻辑关系问题,准确的讲是列与列之间的层次关系。SQL代码如下:1 SELECT FIRST.CNumber, SECOND.PCNumber2 FROM Course FIRST, Course SECOND3 WHERE FIRST.PCNu
2017-10-20 09:45:33 6166
转载 synchronized和volatile的使用方法以及区别
先看看下面的例子:public class ThreadTest { public static void main(String[] args) { final Counter counter = new Counter(); for (int i = 0; i ) { new Thread(new Runnable(
2017-10-17 21:02:01 311
转载 java多态实现原理
众所周知,多态是面向对象编程语言的重要特性,它允许基类的指针或引用指向派生类的对象,而在具体访问时实现方法的动态绑定。C++ 和 Java 作为当前最为流行的两种面向对象编程语言,其内部对于多态的支持到底是如何实现的呢,本文对此做了全面的介绍。注意到在本文中,指针和引用会互换使用,它们仅是一个抽象概念,表示和另一个对象的连接关系,无须在意其具体的实现。Java 的实现方式J
2017-10-17 20:57:49 808
转载 数据库事务的四大特性以及事务的隔离级别
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响
2017-10-17 11:14:41 433
转载 java网络编程面试题
1.网络编程时的同步、异步、阻塞、非阻塞?同步:函数调用在没得到结果之前,没有调用结果,不返回任何结果。异步:函数调用在没得到结果之前,没有调用结果,返回状态信息。阻塞:函数调用在没得到结果之前,当前线程挂起。得到结果后才返回。非阻塞:函数调用在没得到结果之前,当前线程不会挂起,立即返回结果。2.Java如何实现无阻塞方式的Socket编程?NIO有效解决了多线
2017-10-17 09:18:25 593
转载 详解重写equals()方法就必须重写hashCode()方法的原因
从Object类的hashCode()和equals()方法讲起: 最近看了Object类的源码,对hashCode() 和equals()方法有了更深的认识。重写equals()方法就必须重写hashCode()方法的原因,从源头Object类讲起就更好理解了。先来看Object关于hashCode()和equals()的源码:[java]
2017-10-16 14:37:08 365
转载 内存溢出和内存泄漏的区别,产生原因以及解决方案
一、概念与区别内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请 了一个integer,但给它存了long才能存下的数,那就是内存溢出。内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但 内存泄露堆
2017-10-16 14:33:00 524
转载 缓存淘汰算法--LRU算法
1. LRU1.1. 原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1.2. 实现最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到
2017-10-08 13:14:19 377
转载 Hashtable与ConcurrentHashMap区别
ConcurrentHashMap融合了hashtable和hashmap二者的优势。hashtable是做了同步的,hashmap未考虑同步。所以hashmap在单线程情况下效率较高。hashtable在的多线程情况下,同步操作能保证程序执行的正确性。但是hashtable每次同步执行的时候都要锁住整个结构。看下图:图左侧清晰的标注出来,lock每次都要锁住整个结
2017-09-26 19:35:34 287
转载 双向数据绑定---AngularJS的基本原理学习
Angular JS (Angular.JS) 是一组用来开发Web页面的框架、模板以及数据绑定和丰富UI组件。它支持整个开发进程,提供web应用的架构,无需进行手工DOM操作。 AngularJS很小,只有60K,兼容主流浏览器,与 jQuery 配合良好。双向数据绑定可能是AngularJS最酷最实用的特性,将MVC的原理展现地淋漓尽致.AngularJS的工作原理是:HTML模板将会
2017-09-24 16:16:57 606
转载 数据库常见面试题
1. 主键 超键 候选键 外键主 键:数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。超 键:在关系中能唯一标识元组的属性集称为关系模式的超键。一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键:是最小超键,即没有冗余
2017-09-24 16:13:11 354
转载 Mybatis最入门---分页查询(拦截器分页原理及实现)
前文,我们演示了物理分页的Sql实现方式,这种方式使得我们每次在编写查询服务时,不断的重复造轮子。这样的代码实现方式就显得十分的笨拙了。本文是Mybatis分页查询的最后一片内容,我们将介绍基于拦截器的,精巧的实现方式。在阅读这篇文章之前,强烈建议各位看官能够先阅读上文。这样就能对下文我们提及的各种对象及他们之间的关系有一个清晰的关系。好了,废话不多讲,开始我们的正文部分吧。准备工
2017-09-24 16:09:55 593
转载 JAVA线程池原理详解二
Executor框架的两级调度模型在HotSpot VM的模型中,JAVA线程被一对一映射为本地操作系统线程。JAVA线程启动时会创建一个本地操作系统线程,当JAVA线程终止时,对应的操作系统线程也被销毁回收,而操作系统会调度所有线程并将它们分配给可用的CPU。在上层,JAVA程序会将应用分解为多个任务,然后使用应用级的调度器(Executor)将这些任务映射成固定数量的线程;在底
2017-09-24 16:03:22 244
转载 JAVA线程池原理详解一
线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。线程池的创建1 public ThreadPoolExecutor(int corePoolSize,2 int
2017-09-24 16:02:24 256
转载 详解synchronized与Lock的区别与使用
引言:昨天在学习别人分享的面试经验时,看到Lock的使用。想起自己在上次面试也遇到了synchronized与Lock的区别与使用。于是,我整理了两者的区别和使用情况,同时,对synchronized的使用过程一些常见问题的总结,最后是参照源码和说明文档,对Lock的使用写了几个简单的Demo。请大家批评指正。12技术点:1、线程与进程:在开始之前先把进程与线程进行区分一
2017-09-24 15:56:07 905
转载 Lock和synchronized比较详解
今天看了并发实践这本书的ReentantLock这章,感觉对ReentantLock还是不够熟悉,有许多疑问,所有在网上找了很多文章看了一下,总体说的不够详细,重点和焦点问题没有谈到,但这篇文章相当不错,说的很全面,主要的重点都说到了,所有在这里转载了这篇文章,注意红色字体。 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Ja
2017-09-24 15:55:32 293
转载 并发编程之ThreadLocal、Volatile、synchronized、Atomic关键字扫盲
前言对于ThreadLocal、Volatile、synchronized、Atomic这四个关键字,我想一提及到大家肯定都想到的是解决在多线程并发环境下资源的共享问题,但是要细说每一个的特点、区别、应用场景、内部实现等,却可能模糊不清,说不出个所以然来,所以,本文就对这几个关键字做一些作用、特点、实现上的讲解。1、Atomic作用对于原子操作类,Java的conc
2017-09-24 15:51:27 251
转载 JAVA多线程之线程间的通信方式
一,介绍本总结我对于JAVA多线程中线程之间的通信方式的理解,主要以代码结合文字的方式来讨论线程间的通信,故摘抄了书中的一些示例代码。 二,线程间的通信方式①同步这里讲的同步是指多个线程通过synchronized关键字这种方式来实现线程间的通信。参考示例:public class MyObject { synchronized
2017-09-24 15:49:19 305
转载 Java多线程面试常见核心问题总结
1. 有T1、T2、T3三个线程,如何怎样保证T2在T1执行完后执行,T3在T2执行完后执行? 使用join方法。 join方法的功能是使异步执行的线程变成同步执行。即调用线程实例的start方法后,该方法会立即返回,如果调用start方法后,需要使用一个由这个线程计算得到的值,就必须使用join方法。如果不使用join方法,就不能保证当执行到start方法后面的某条语句时,这
2017-09-24 15:45:32 679
转载 存储过程详解
MySQL数据库在5.0版本后开始支持存储过程,那么什么是存储过程呢?怎么创建、查看和删除存储过程呢?存储过程有什么优点?这些是本章节要探讨的问题: 什么是存储过程: 简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集,该语句集包括SQL语句(对数据的增删改查)、条件语句和循环语句等。 创建存储过程: 存储过程
2017-09-15 16:34:29 272
转载 深入理解Java反射
要想理解反射的原理,首先要了解什么是类型信息。Java让我们在运行时识别对象和类的信息,主要有2种方式:一种是传统的RTTI,它假定我们在编译时已经知道了所有的类型信息;另一种是反射机制,它允许我们在运行时发现和使用类的信息。1、Class对象 理解RTTI在Java中的工作原理,首先需要知道类型信息在运行时是如何表示的,这是由Class对象来完成的,它包含了与类有关的信息。Cl
2017-09-15 14:33:27 243
转载 Java反射机制--是什么,为什么,怎么用。
往往当我们面对一项新的知识时,我们往往需要知道三个方面,它是什么,它能做什么,它比原有知识强在哪里,我们该怎么使用它。当你能够解决这些问题时,便意味着你已经对这项知识入门了。一、是什么 Java Reflaction in Action有这么一句话,可以解释。反射是运行中的程序检查自己和软件运行环境的能力,它可以根据它发现的进行改变。通俗的讲就是反射可以在运行时根据指定的类名获得
2017-09-15 14:24:10 366
转载 HashMap,LinkedHashMap,TreeMap,HashTable的区别
Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写Hash
2017-09-12 16:45:19 259
转载 HashSet,TreeSet和LinkedHashSet的区别
Set接口Set不允许包含相同的元素,如果试图把两个相同元素加入同一个集合中,add方法返回false。Set判断两个对象相同不是使用==运算符,而是根据equals方法。也就是说,只要两个对象用equals方法比较返回true,Set就不 会接受这两个对象。HashSetHashSet有以下特点 不能保证元素的排列顺序,顺序有可能发生变化 不是同步的 集合元
2017-09-12 16:44:17 267
转载 服务器经常挂掉的6个原因
如果没有任何经验,学习如何扩展一个网站是相当困难的。假设现在你有很多像highscalability.com那样网站,你需要一些好的解决方案来扩展它们,但是世上没有“万能药”,没有哪个解决方案可以适应所有网站的需要。你不得不自己动手,通过不断地思考来找到一个能满足你的需求的解决方案。我也是这样做的。几年以前,我的老板来找我,然后对我说:“我们有一个新项目想交给你来做。主要是一个网站的重构,
2017-09-06 10:11:36 22690
转载 在一个千万级的数据库查寻中,如何提高查询效率?
在一个千万级的数据库查寻中,如何提高查询效率?1)数据库设计方面: a. 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。b. 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默
2017-09-06 10:08:03 295
转载 常见HTTP错误代码大全
一些常见的状态码为:200 - 服务器成功返回网页404 - 请求的网页不存在503 - 服务不可用详细分解:1xx(临时响应)表示临时响应并需要请求者继续执行操作的状态代码。代码 说明100 (继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。 101 (切换协议) 请求者已要求服务器切换协议,服务器已确认
2017-09-06 10:04:53 711
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人