自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 vue demo

<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>vue demo</title> </head> <body> <div id="content&qu

2018-10-27 00:00:17 339

原创 js笔记day02--强制类型转换

1、将其他数值转换为字符串有三种方式: toString()方法、String()函数、拼串 。 2、注意null和undefined这两个值没有toString()方法,如果调用他们的方法,会报错。 3、有三个函数可以把非数值转换为数值:Number()、parseInt()和parseFloat()。   –parseInt()和parseFloat()可以截取数字部分,使用起来更灵活

2017-10-08 20:42:36 374

原创 js笔记day01--基础语法

1、我们已经知道了一个完整的 JavaScript 实现包含了三个部分:   ECMAscript、DOM和BOM。 2、JavaScript 是 严格区分大小写的。 3、JS 中的注释和 JavaJava Java的一致,分为两种:   – 单行注释: // 注释内容 注释内容   – 多行注释: /* 注释内容 */ 4、所谓 标识符 ,就是指变量 、函数 、属性的名字, 或函数的参

2017-10-08 20:29:54 341

原创 线程池

第四种获取线程的方法:线程池,一个ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用Executors 工厂方法配置。   线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包括执行任务集时使用的线程)的方法。每个ThreadPoolExecutor 还维护着一些基本的统计数据

2017-10-01 21:47:26 388

原创 多线程“锁”要点

一个对象里面如果有多个synchronized方法,某一个时刻内,只要一个线程去调用其中的一个synchronized方法了,其它的线程都只能等待,换句话说,某一个时刻内,只能有唯一一个线程去访问这些synchronized方法   锁的是当前对象this,被锁定后,其它的线程都不能进入到当前对象的其它的synchronized方法   加个普通方法后发现和同步锁无关   换成两个对象后,不是

2017-10-01 21:41:31 398

原创 读-写锁ReadWriteLock

ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。只要没有writer,读取锁可以由多个reader 线程同时保持。写入锁是独占的。   ReadWriteLock 读取操作通常不会改变共享资源,但执行写入操作时,必须独占方式来获取锁。对于读取操作占多数的数据结构。ReadWriteLock 能提供比独占锁更高的并发性。而对于只读的数据结构,其中包含的不变性可以

2017-10-01 21:37:10 363

原创 Condition 控制线程通信

Condition 接口描述了可能会与锁有关联的条件变量。这些变量在用法上与使用Object.wait 访问的隐式监视器类似,但提供了更强大的功能。需要特别指出的是,单个Lock 可能与多个Condition 对象关联。为了避免兼容性问题,Condition 方法的名称与对应的Object 版本中的不同。   在Condition 对象中,与wait、notify 和notifyAll 方法对应的

2017-10-01 21:33:15 1167

原创 显示锁Lock

用于解决多线程安全的方式: synchronized:隐式锁   1. 同步代码块   2. 同步方法 jdk 1.5 后:   3. 同步锁 Lock(是一个显示锁,需要通过 lock() 方法上锁,必须通过 unlock() 方法进行释放锁)  一般为了养成良好的习惯,编写代码是上锁和放锁一起写,且为了保证放锁的代码一定能执行到,将放锁的代码置于finally中。以下为一段卖票的示例程

2017-10-01 21:27:39 366

原创 多线程创建方式三之实现Callable接口

Callable 接口  Java 5.0 在java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口   Callable 接口类似于Runnable,两者都是为那些其实例可能被另一个线程执行的类设计的。但是Runnable 不会返回结果,并且无法抛出经过检查的异常。   Callable 需要依赖FutureTask ,FutureTask 也可以用

2017-09-24 18:57:45 381

原创 闭锁机制

CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。   闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行:   确保某个计算在其需要的所有资源都被初始化之后才继续执行;   确保某个服务在其依赖的所有其他服务都已经启动之后才启动;   等待直到某个操作所有参与者都准备就绪再继续执行

2017-09-24 14:57:13 851

原创 锁分段机制

Java 5.0 在java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。      ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。对与多线程的操作,介于HashMap 与Hashtable 之间。内部采用“锁分段”机制替代Hashtable 的独占锁。进而提高性能。      此包还提供了设计用于多线程上下文中的

2017-09-24 14:21:29 1203

原创 模拟CAS算法

/* * 模拟 CAS 算法 */public class TestCompareAndSwap { public static void main(String[] args) { final CompareAndSwap cas = new CompareAndSwap(); for (int i = 0; i < 10; i++) {

2017-09-24 14:06:50 425

原创 原子变量CAS算法

一、CAS算法   1、CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。   2、CAS 是一种无锁的非阻塞算法的实现。   3、CAS 包含了3 个操作数:     3.1、需要读写的内存值V     3.2、进行比较的值A     3.3、拟写入的新值B     3.4、当且仅当V

2017-09-24 11:31:55 796

原创 volatile之内存可见性

1.内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。   2.可见性错误是指当读操作与写操作在不同的线程中执行时,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。   3.我们可以通过同步来保证对象被安全地发布。除此之外我们也可以使

2017-09-23 22:40:34 262

原创 Java8新特性

主要内容: 1、Lambda 表达式 2、函数式接口 3、方法引用与构造器引用 4、Stream API 5、接口中的默认方法与静态方法 6、新时间日期API 7、其他新特性 (其中最为核心的为Lambda 表达式与Stream API)优点: 1、速度更快 2、代码更少(增加了新的语法Lambda 表达式) 3、强大的Stream API 4、便于并行 5、最大化减少空指

2017-09-17 17:01:23 220

原创 json数据的封装与解析

发送给前端的数据封装成json格式,然后前段进行解析。前端核心代码: function ask(){ //1创建ajax对象 var xhr = null; if(window.XMLHttpRequest){//高版本 xhr = new XMLHttpRequest(); }else{//低版本 xhr = new ActiveXObject

2016-09-11 13:19:29 9847

原创 ajax通过xml交互数据

页面代码:script type="text/javascript">function sendXML(){ //获取参数 var name = document.getElementById("nm").value; var pwd = document.getElementById("pwd").value; var xhr = null; if(windo

2016-09-11 00:52:34 1781

原创 Hibernate框架基础

Hibernate是一个开放源码的、非常优秀、成熟的O/R Mapping框架。它提供了强大、高性能的Java对象和关系数据的持久化和查询功能。   Hibernate 只是一个将持久化类与数据库表相映射的工具,每个持久化类实例均对应于数据库表中的一条数据行。可以使用面向对象的方法操作此持久化类实例,完成对数据库表的插入、删除、修改等操作。     利用Hibernate操作数据库,我们通

2016-08-30 14:22:26 555

原创 Ajax技术小结

Ajax的英文全称为:Asynchronized JavaSccipt and XML,技术组成由JavaScript、DOM、CSS和XMLHttpRequest/ActiveXObj对象组成,其中XMLHttpRequest为高版本浏览器对应的Ajax核心类对象,ActiveXObj为低版本浏览器对应的Ajax核心类对象。Ajax属于点上通讯,变动的只有页面的部分,它本质有JS单开一个

2016-08-23 12:46:03 417

原创 使用log4j进行日志管理

使用log4j进行日志管理1、Log4j简介  作用:1、 跟踪代码的运行轨迹。2、 输出调试信息三大组成:1、 Logger类---生成日志。2、 Appender类---定义日志输出的目的地。3、 Layout类---指定日志输出的格式。2、Logger组件  日志共分为5种级别(ON开,OFF关这两个不计算在内),从高到底(从严重到轻微)排序为:

2016-08-23 11:15:18 2238

原创 session的钝化与活化技术

lHttpSessionActivationListener •实现此接口的JavaBean,可以感知自己被活化(从硬盘到内存)和钝化(从内存到硬盘)的过程。•如果需要同时保存Session中的JavaBean则JavaBean也要实现Serializable序列化接口。•实现此接口的JavaBean与HttpSessionBindingListener一样,不必配置到web.

2016-08-20 13:17:34 3556

原创 过滤器、监听器应用之网站访问量

public class CountFilter implements Filter { public CountFilter() { } public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain cha

2016-08-19 10:54:58 634

原创 设计模式之监听者模式

public class Cat { private String name; private CatListener cl; public Cat(String name) { super(); this.name = name; } public String getName() { return name; } public void climb()

2016-08-19 10:45:21 1694

原创 过滤器应用之全站压缩

全站压缩现在的网络,流量就是钱。所以,如果能在很少的流量的情况下,查看相同的数据内容,那何乐而不为呢?•实现方案: •用户在调用response.getOutputStream()或response.getWriter()时让获取自己的输出流对像,我们将信息写到事先准备好的缓存当中。 •当用户书写完毕,我们再调用自己提供的方法,获取缓存中的数据流。 •然后接着对数据进行压

2016-08-18 08:12:30 325

原创 拦截技术之过滤器

JavaEE中我目前知道的拦截技术有三种:     (1)装饰模型     (2)动态代理     (3)过滤器过虑器能对客户的请求进行预先处理,然后再将请求转发给其他web组件。过滤器的过滤过程: 过滤器的技术要点:     (1)可以拦截(在前端和Servlet之间),在doFilter方法中操作。     (2)可以拦截服务器中的任意资源     (3)该

2016-08-16 23:49:11 529

原创 Myeclipse下web项目改名,tomcat下不变的问题

根据需要,有时一个web项目要改项目名。这个简单,在myeclipse下重命名就可以。但重新发布到tomcat下,访问的时候还是原来的名字,刚改的名字访问不到。下面给个简单的解决方法:myeclipse中,你的项目名处右键点击,然后选择properities—->然后点击myeclipse—->web选项,修改web context-root名称为你要修改的项目名和前面重命名的名称一致就行了。再点击

2016-08-16 23:14:27 536

原创 dbUtils工具的使用

使用dbUtils需要倒入第三方包:commons-dbutils-1.4.jar(基本包)和commons-dbutils-ext.jar(扩展包)public class DbUtilsDemo { @Test//普通方式---不用dbUtils的查询 public void jdbcQuery() throws SQLException{ Connection c

2016-08-15 13:48:34 346

原创 c3p0数句库连接池的使用

public class C3p0Demo { @Test public void c3p0Demo() throws PropertyVetoException, SQLException{ ComboPooledDataSource pool = new ComboPooledDataSource(); pool.setUser("root");

2016-08-15 13:41:42 363

原创 将数据库数据导到excel(xls)中

import java.io.FileOutputStream;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.util.ArrayList;import java.util

2016-08-14 15:47:42 344

原创 DBCP数据库连接池的使用

包括DBCP数据库连接池和C3P0数据库连接池。DBCP数据库连接池的使用: 方式一:(纯java方式设置参数)@Testpublic void dbcpUse() throws SQLException{ BasicDataSource pool = new BasicDataSource(); //连接池 pool.setDriverClassName("co

2016-08-13 11:02:53 409

原创 本地线程管理、仿ThreadLocal

在实际项目中,通常有这样的要求,对于同一个线程内多次请求获取对象,对象要求必须为同一个(如数据多表库多表进行事务处理,请求的连接对象必须为同一个),这就要用到线程管理技术。线程管理,涉及到一个核心的类,java.lang.ThreadLocal,通过这个类来仅实现相应的功能。 代码演示:public class ThreadLocalDemo { private static ThreadLo

2016-08-12 13:19:09 248

原创 数据库连接池、动态代理

在web项目中,Java访问数据库采用的是多用户操作,需要频繁连接数据库,一种方法是来一个请求给一个操作对象,这种方法想法简单,但存在巨大隐患,如果访问量特别的大,数据库连接对象过多,可能导致奔溃。好的方法是,采用数据库连接时统一管理,包括数据库连接对象的个数限制以及使用后回收。说到管理,根据程序员习惯,拿到连接对象进行完操作后,一般会关闭连接对象,这就会产生一个问题,下一次别的用户再拿到回收后的关

2016-08-10 14:23:37 1149

原创 数据库大数据存储类型演示

import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.

2016-08-09 16:22:22 838

原创 jdbc连接数据库演示(Statement、PrepareStatement,CallableStatement的演示)

在实际的开发中可能频繁用到数据库,这就要频繁创建连接对象以及频繁填充参数,一个好的方法是(类似实际框架中运用的方法)将参数以key-value的形式在src目录下(因为以后可能涉及到网络操作,方便获取)创建一个配置文件,将创建连接器的那部分代码做成一个工具类。示例如下: jdbc.properties的source视图(#表示注释): jdbc.properties的properties视图

2016-08-08 14:49:52 650

原创 使用DB Browser辅助配置数据库

首先,切换到DB Browser视图。 然后,在在如图黑色三角处右键,new,出现如下配置界面。 以配置MySQL为例,参数配置界面填充数据如图: 点击Test Driver按钮,弹出一个输入密码提示框,输入正确的数据库密码后,出现界面,表示配置成功。 然后,点击Next按钮,进入下一步,出现如下界面: 选择第三项,然后add刚才的数据库,finish完成。连接就建好了,出现如

2016-08-08 10:51:07 10215

原创 数据库事务

事物的特点: 原子性(atomicity):组成事务处理的语句形成了一个逻辑单元,不能只执行其中的一部分。 一致性(consistency):在事务处理执行前后,数据库是一致的(数据库数据完整性约束)。 隔离性(isolcation):一个事务处理对另一个事务处理的影响。 持续性(durability):事务处理的效果能够被永久保存下来 。 一个事务只会有一个结果:要么成功、要么失败

2016-08-08 00:23:51 426

原创 数据库的连接方式、存储过程

连接方式:左关联、右关联、内关联、外关联、全关联 MySQL数据库只支持前三种。 左关联:左表为主表,显示左边全部的和右边与左边相同的 右关联:右表为主表,显示右边全部的和左边与右边相同的 内关联:只显示满足条件的!存储过程:保存在数据库上的一段可执行代码。类似于函数。 它的语法是: 它的语法是: Create procedure sp_name (参数..) Begin

2016-08-07 08:30:46 2166 1

原创 数据库设计(表与表之间的3种关系)

表与表之间一般存在三种关系,即一对一,一对多,多对多关系。 下面分别就三种关系讲解数据库相关设计的思路和思考过程;(1)一对一关系 例如,下面的一张表,保存了人的相关信息,有男有女,要求查处所有的夫妻。 sql代码:CREATE TABLE IF NOT EXISTS person( id INT PRIMARY KEY AUTO_INCREMENT, sname VARCHA

2016-08-07 02:31:35 125671 19

原创 MySQL数据库以及SQL语法基础、中文乱码

SQL—Structured Query Language结构化查询语言。一、DDL – 数据定义语言(Data Definition Language) 建库、建表、设置约束等: create\drop\alter二、DCL – 数据控制语言(Data Controll Language) 数据授权,收回授权 grant\revoke三、DML-数据操纵语言(Data Manipulati

2016-08-06 14:30:15 683

原创 简单版Java访问MySQL数据库

package cn.hncu.hello;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import org.junit.Test;public class DBHello { @Test public v

2016-08-05 23:20:21 366

空空如也

空空如也

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

TA关注的人

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