自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

doggy1853

愿我消失在云天

  • 博客(45)
  • 收藏
  • 关注

原创 NoSql与RDBMS的对比

NoSql出现的原因是因为有很多应用不需要使用RDBMS的特性(强一致性以及join查询),而这些特性还成为了阻碍(如join限制了分片等),以下对比了两种数据库的特性,以便于更好地进行技术选型。特性RDBMSNoSql强一致事务支持,ACID特性不支持,BASE特性SQL语句(跨表join)支持不支持水平扩展(分片)较难支持,但也有proxy等方案可以支持较容易支持,MongoDB天然支持分片数...

2018-03-16 17:59:58 1322

原创 实现简单的代码热替换

package com.hotswap; import java.io.File; import java.io.FileInputStream; import java.io.IOException; /** * Created by huangzhw on 2016/9/8. */ public class HotSwapTest { public static void ma...

2016-09-08 19:24:09 1725

原创 Mysql备忘录

子查询 分类(按是否与外部查询相关) 关联子查询:每行外部查询都会触发一次关联子查询. 非关联子查询:子查询可以独立运行,在整个查询中只查询一次. 分类(按位置) select 位置的子查询:要求该子查询必须返回单个值(单行+单列). from 位置的子查询:有视图的意味在里面,相当于返回一张新表. where 位置的子查询:最复杂. demo user表 ...

2016-09-04 23:35:36 512

原创 logback学习笔记

日志级别 Trace < Debug < Info < Warn < Error. Configuration节点 属性 scan:若为true,则监听配置文件变化,变化后重新加载 scanPeriod:监听变化的周期,单位为毫秒。 子节点 logger:用来设置某一个包或者具体的某一个类的日志打印级别以及指定 root:一个特殊的logger,当一条日...

2016-08-29 18:53:38 939

原创 Apache Comons+Google Guava

Apache Commons Commons lang3 //包含以下便捷工具类 1.StringUtils StringUtils.isBlank(""); // null -> true," " -> true StringUtils.isEmpty(""); //null -> true,"" -> true," " -&

2016-08-29 00:33:57 1855

原创 Java与数据结构

使用java实现的一些数据结构 堆 import java.util.ArrayList; import java.util.List; /** * Created by huangzhw on 2016/7/27. */ public class T { public static void main(String[] args) {...

2016-07-28 16:54:27 358

原创 java插入式注解

最近在公司遇到了使用的类库lombok,好奇底层实现,探索得知是使用插入式注解实现的. 插入式注解是在代码编译时,通过特殊的插入式注解解释器,对语法树进行改造,使得根据注解添加实例域/方法成为可能. 以下为代码: //简单的一个注解 /** * @author doggy * Created on 2016-07-21. */ @Retention(Retenti...

2016-07-22 00:55:37 1516

原创 SpringMVC注解

先谈SpringMVC的访问过程 一个SpringMVC的请求到来时,会先由DispatcherServlet进行拦截. DispatcherServlet调用Handler Mapping进行Controller选择,如post转发给Controller的method,静态资源直接返回等等. 将请求参数传给Controller,Controller对数据进行处理. Controlle...

2016-07-10 17:30:06 3691

原创 JVM解析与分派

jvm中关于方法调用的指令有invokestatic,invokespecial,invokevirtual,invokeinterface以及invokedynamic五种。 其中invokestatic与invokespecial指令在解析完成(编译完成)后就能确定所要调用的方法。 指令 产生情况 invokestataic 调用静态方法 invok...

2016-07-07 00:58:35 1099

原创 JDK动态代理

一个动态代理的实例 package com;import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy;/** * @author doggy * Created on 16-7-3. */ public class Tes

2016-07-05 11:57:41 374

原创 Spring切面

基本概念 通知(Advice):定义了一个切面该干什么(what)以及什么时候应用(when).spring的通知类型有五种: before:在方法调用之前. after:在方法调用之后,无论方法是否正常返回. after-returning:在方法正常返回之后应用. after-throwing:在方法出现异常时调用. around:该通知将包住整个方法. 连接点(join point):所有可

2016-07-05 11:43:00 950

原创 spring注解

注解的使用,首先编写一个注册文件Configure.java,并用@Configuration注解,然后使用注解容器类加载bean即可. @Configuration @ComponentScan(basePackages = {"music"},excludeFilters = {@ComponentScan.Filter(value = MF.class)}) public class Conf

2016-07-04 00:54:52 3054

原创 linux基础

设备 字符设备,表示的是每次接受一个字数输入,串行输入字符的设备,如键盘. 块设备,表示的是类似于硬盘/内存等可以随机地址存取的设备. 特殊设备. 特殊设备列表 /dev/sdtin:标准输入,也就是终端界面输入,cat命令的默认数据源. # cat [/dev/stdin] > file //从/dev/stdin数据源读取数据,并输出重定向到file. # some input # c

2016-06-26 17:55:17 455

原创 线程安全之可见性、有序性以及原子性

可见性:一个线程对主内存的修改可以及时的被其他线程观察到。 有序性:一个线程观察其他线程中的指令执行顺序,由于指令 重排序的存在,该观察结果一般杂乱无序。 原子性:提供了互斥访问。 特性 操作 可见性 可以由final(不会修改)、volatile(强制更新+读取主内存)以及synchronized(在unlock时会刷新所有已修改数据到主内存,lock时会从主内存重新加载数据)实现

2016-06-25 18:46:49 3115

原创 java volatile关键字的讨论

//一个volatile的用例 //Thread A init(); initlized= true;//Thread B while(!initlized){ sleep(); } //volatile变量的作用如下,保证了线程B使用initlized变量时,从 主线程读取,而不是使用工作线程的变量(变量可见性)。保证了线程A 中的initlized=true会在init()方法后执行(禁

2016-06-25 17:35:56 618

原创 invokedynamic与lambda表达式

本文主要是探讨lambda表达式是如何被虚拟机执行的. invokedynamic的执行 在虚拟机中,每条invokedynamic指令出现的位置,都称为一个动态调用点.该指 令接受一个u2的参数,该参数指向常量池中的一个InvokeDynamic_info. 每个InvokeDynamic_info由两部分组成,分别是指向NameAndType以及指向BootStrapMethod的

2016-06-24 16:58:33 2775 1

原创 java继承之属性与方法访问

以下讨论都是基于从子类实例进行属性/方法访问出现的情况.建议先看文章-jvm解析与分派 1.从父类方法(未重写)访问属性时,永远都只使用父类属性.public class Test { public static void main(String[] args) throws Exception{ F f = new S(); f.prt();// --> 返

2016-06-11 16:23:44 2486

原创 一个简单的epoll使用例子

核心代码,所有代码在这里下载#include "unixnet.h" #include "chat.h" #include "sys/epoll.h"/** * 改进说明:使用epoll进行事件回调,多用户可以处于输入命令状态(不再阻塞在登陆处) */int main (int argc, char *argv[]) { int listen_fd; socklen_t cli_

2016-06-10 13:25:02 1064

原创 Hibernate与数据库事务

Hibernate异常 1.Hibernate5/JPA抛出的异常都是RuntimeException异常. 2.如果一个持久化上下文运行在一个JTA事务下,那么抛出的大部分JPA异常(严重异常)会自动将当前事务状态设置为Rollback除了几个异常,分别是(NoResultException;NonUniqueResultException;QueryTimeoutException;LockTi

2016-06-10 13:23:22 707

原创 java异常体系

基类是Throwable,直接子类有Error以及Exception. 其中Error表示的是,系统级别的错误,是一个unchecked错误,不可抛出,不可catch,尽量在系统级别处理. Exception分为checked Exception与unchecked Exception.其中unchecked Exception等价于是RunTimeException及其子类,该类异常可以直接抛出处

2016-06-10 13:22:45 515

原创 mysql MVCC之InnoDB实现

先给出几个概念mysql中的RR隔离级别不会出现幻读。 MVCC控制过程中,mysql会往每条数据附加三个列,分别是 DB_TRX_ID(最后更新(insert/update/delete)数据的事务id与 一个标志位标识该记录是否为删除记录)、DB_ROLL_PTR(回滚指 针)与DB_ROW_ID(自增,用于标识数据的更新时间). 每个事务开始时系统会分配一个事务号,该事务号递增。 MV

2016-06-10 13:22:17 644

原创 Clojure小教程(更新中)

什么是函数式编程? 特点1:函数是一等公民,即与其他基本类型处于等价地位,可以被返回,可以被赋值也可以作为参数.python js clojure都支持这点. 特点2:更多的表达式,减少过程.即每个语句尽量都是计算并返回计算结果.所有的函数都要有返回值(可以为nil). 特点3:没有副作用(side-effect),即函数就是单纯的执行计算,不改变外部变量.(改变外部变量最简单的就是修改一个全局变量

2016-06-10 13:19:50 1091

原创 JDK1.8新特性

javac -source 1.7 -target 1.8 T.java 表示源文件版本为1.7,编译成的字节码使用1.8 lambda表达式,即由用户来提供行为的具体实现. /** * @author Sunset * Created on 2016/05/15. */ public class T { public static void main(String[]

2016-06-10 13:19:01 2272

原创 java泛型

支持泛型类以及泛型方法 class MyGen<T,E>{ //<X>类型声明在返回值前,若未在类中声明,则必须在方法里声明 public static <X> X myCast(Object o){ return (X)o; } } //类型推导,由前面的引用进行 String s = MyGen.myCast("lalala"); //显式调用 Strin

2016-06-10 13:18:13 321

原创 shell简单编程

赋值与循环分支 $x 用于取变量x的值 $1 表示第一个参数,$#表示参数个数,shift移动一个参数。 let i=$x+$y,为整数操作赋值,所以必须有两个以上操作数.当只有一个操作数时使用,i=$x.#!/bin/bash echo "please input num:" read num echo "the num is $num" #声明变量,不能有空格 sum=0 i=0 # while

2016-06-10 13:17:38 343

原创 JPA持久化上下文与对象状态

hibernate 认为一个有id的新对象为detached. 自动脏检查可以通过继承org.hibernate.CustomEntityDirtinessStrategy并设置hibernate.entity_dirtiness_strategy来自定义. JPA提供一个持久化上下文作为一级缓存,提供自动脏检查.对应某个id的实例在持久化上下文中只有一个对象. Hibernate,find时总是

2016-06-10 13:17:03 3801

原创 jpa 脚本生成数据库以及数据完整

<prop key="hibernate.hbm2ddl.import_files_sql_extractor"> org.hibernate.tool.hbm2ddl.MultipleLinesSqlCommandExtractor</prop> <!--系统执行create语句的时间点之前(then),当时间点选择为metadata则使用自动生成,设置为scrip

2016-06-10 13:16:17 1641

原创 many-to-many

//-----------------------------关联表--------------------------------- @Entity @Table(name = "CATEGORY_ITEM") @org.hibernate.annotations.Immutable public class CategorizedItem { //使用符合主键 @Embeddable

2016-06-10 13:15:42 411

原创 Hibernate OneToOne关联

单向-共享主键 //Address不包含任何到User的信息 //使用optional=false,确定addr非空,这样hibernate不用检查addr是否为空,才能使用懒加载 //使用@PrimaryKeyJoinColumn使用Address的主键作为User的外键以及主键 //添加时需要先添加Address再添加User,并手动设置user.setId(addr.getId()) @Ent

2016-06-10 13:15:15 692

原创 OneToMany/ManyToOne关联

@ManyToOne 以及 @OneToMany //一般选择在多端进行管理,一端放弃,使用级联保存等,即多端添加一个外键列 //Item <-1----------*-> Bid @Entity class Item{ //该集合方便查询,orm的意义. // mappedBy表明其放弃管理关联,由多端进行管理 //cascade表明了级联操作,PERSIST使用时必须建立起B

2016-06-10 13:14:37 544

原创 Hibernate映射集合(JDK以及嵌入式值类)

JDK内置的集合类型有Set、List、Collection、Map四种 //Set与Collection的区别在于是否允许重复元素,java未提供Collection的实现。 //任意的值类型集合映,都需要@ElementCollection,其有两个属性fetch以及targetClass,其中targetClass在集合不是泛型集合时是必须指定的。 //通过@CollectionTable来指

2016-06-10 13:14:00 550

原创 hibernate级联删除错误

@OneToMany配置了cascade=CascadeType.REMOVE,但是在delete时还是报了一个外键引用,删除错误。 原因是,在delete时未从数据库重新加载对象(get/load)。导致删除对象时,该对象只有主键存在,关联集合为null,所以不执行级联删除。 所以在删除一个对象时,一定要从数据库中加载出来再删除!!!!!

2016-06-10 13:13:05 474

原创 HIbernate继承映射策略

策略选择: 1)不需要多态关联以及从父类查询时,使用@MappedSuperclass/TABLE_PER_CLASS,偏向于TABLE_PER_CLASS,因为万一有少量需要关联、查询可以在牺牲性能的前提下满足(使用union)。 2)当需要多态以及从父类查询(较多),而且子类较父类的属性变化不大(新增实例域少),可以考虑使用SINGLE_TABLE。 3)当需要多态以及从父类查询(较多),

2016-06-10 13:12:10 735

原创 mysql自定义函数

//注意规避mysql关键字,可能需要重定义结束符号符delimiter $$ //声明函数:参数类型以及返回类型 create function insertY(start int(11),end int(11)) returns varchar(255) //开始函数实现 begin //定义一个变量 declare i int(11); //给变量赋值

2016-06-10 13:10:23 318

原创 hibernate映射值类型

JDK基本类型 @Transient:用于将某个属性设为瞬时,其不会被映射到数据库,默认的所有属性都将映射到数据库 @Access:用于设置访问属性的策略,当值为@Access(AccessType.PROPERTY)时使用setter,否则使用field。可用于类/具体属性上 @Column:用于进行属性-列名映射以及指定约束(非空、唯一、是否可更新等) @Formula:用于在query时,从数

2016-06-10 13:09:28 1664

原创 hibernate实体映射的一些可选优化/配置

//自动为所有的实体类名/实例域名添加引用``,避免数据库的关键字冲突!!! //在hibernate5以及配置了dialect之后有效 <prop key="hibernate.auto_quote_keyword">true</prop>//使用KK作为搜索类名导入到HQL中,即from KK @Entity(name="KK")//使用命名策略,为映射到的数据库起别名,注意到linux环境下,

2016-06-10 13:08:19 656

原创 Hibernate主键生成策略

/** 在所有策略中,只有assigned策略的主键是自己定义的,其余在调用save/persist保存到数据库时会自动生成一个id,所以在这之前设置的id没有意义,其将被覆盖。 正常情况下enhanced-sequence可以满足选择,最好选择pre-insert类型的策略,特殊情况可以自己分配,需要分布式合并数据库可以使用uuid2 */ /* *JPA自带三种生成策略 *

2016-06-10 13:06:47 466

原创 jta+spring4+hibernate5/jpa2配置

spring配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.

2016-06-10 13:04:58 4504

原创 序列化与反序列化

序列化基础: 即使用ObjectOutputStream与ObjectInputStream进行对象与字节流的转换,一般需要提供一个序列化id。 tip:默认序列化时若一个域被修饰为transient,则不序列化该实例域。 import java.io.*; public class Test { public static void main(String[] args) throws E

2016-06-10 12:58:02 385

原创 NIO实例

服务端程序 package main;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; import java.nio.c

2016-06-10 12:56:08 386

空空如也

空空如也

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

TA关注的人

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