自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(87)
  • 资源 (1)
  • 收藏
  • 关注

转载 Java多线程系列——死锁

一、死锁讲解在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,不再程序往下执行。我们只能通过中止并重启的方式来让程序重新执行。这是我们非常不愿意看到的一种现象,我们要尽可能避免死锁的情况发生! 造成死锁的原因可以概括成三句话:当前线程拥有其他线程需要的资源当前线程等待其他线程已拥有的资源都不放弃自己拥有的资源1.1锁顺序死锁首先我们来看一下最简...

2018-07-24 21:58:29 479

原创 Java多线程系列——Lock类解析

JVM提供了synchronized关键字来实现对变量的同步访问以及用wait和notify来实现线程间通信。在jdk1.5以后,JAVA提供了Lock类来实现和synchronized一样的功能,并且还提供了Condition来显示线程间通信。一:Lock类探讨一下java.util.concurrent.locks包中常用的类和接口。1.lock首先要说明的就是Lock...

2018-06-11 10:38:51 456

转载 Java多线程系列——volatile关键字

一:volatite 简述Java 语言提供了一种稍弱的同步机制,即 volatile 变量.用来确保将变量的更新操作通知到其他线程,保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新. 当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的.在多处理器的CPU架构下,因为每个处理器都有自己的缓存,线程访问变量的时候会读取缓存,多个线程读取的缓存不一样会导...

2018-06-11 10:36:56 421

转载 Java多线程系列——原子类的实现(CAS算法)

  Java提供的原子类是靠 sun 基于 CAS 实现的,CAS 是一种乐观锁。关于乐观锁与悲观锁。  原子变量类相当于一种泛化的 volatile 变量,能够支持原子的和有条件的读-改-写操作。AtomicInteger 表示一个int类型的值,并提供了 get 和 set 方法,这些 Volatile 类型的int变量在读取和写入上有着相同的内存语义。它还提供了一个原子的 compare...

2018-05-13 15:02:01 350

转载 乐观锁与悲观锁

乐观锁  乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量,像数据库如果提供类似于write_condition机制的其实都是提供的乐观锁。   CAS便是乐观锁技术,当多个线程尝试使用CAS同时...

2018-05-13 15:00:17 200

原创 Spring源码学习--Bean的生命周期

Spring作为当前Java最流行、最强大的轻量级框架,受到了程序员的热烈欢迎。准确的了解Spring Bean的生命周期是非常必要的。我们通常使用ApplicationContext作为Spring容器。这里,我们讲的也是 ApplicationContext中Bean的生命周期。而实际上BeanFactory也是差不多的,只不过处理器需要手动注册。一、生命周期流程图:  Sprin...

2018-04-20 14:46:30 1292 1

原创 如何显示或者隐藏Ext.grid.Panel

最近做项目遇到一个问题,如图所示,需要动态隐藏这个gridPanel, 在Ext api中找到grid.Panel的hide()方法,如图所示,发现panel隐藏了,但是标题却没有隐藏, 然后找到设置标题的方法setTitle(“”),发现文字隐藏掉了,但是后面的背景没有隐藏掉,显然也是不行的 /** * 创建tabPanel * * ...

2018-04-19 22:11:55 2908

转载 springMVC通过Filter实现防止xss注入

跨站脚本工具(cross 斯特scripting),为不和层叠样式表(cascading style sheets,CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往web页面里插入恶意scriptScript代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。防止XSS攻击简单的预防就是对Request请求中的一些参数去掉一些比较敏感的...

2018-04-17 12:02:33 365

原创 Caused by: java.sql.SQLSyntaxErrorException: ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOB

Internal Exception: java.sql.SQLSyntaxErrorException: ORA-00932: 数据类型不一致: 应为 -, 但却获得 CLOBError Code: 932Call: SELECT * FROM (SELECT a.*, ROWNUM rnum FROM (SELECT DISTINCT t0.PRICEINQUIRYID AS a1, ...

2018-04-10 10:22:32 5172

转载 Docker容器部署Java web应用(定制镜像)

概念简述镜像 一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数。 Docker镜像是一个只读的模板。比如一个镜像可以包含Ubuntu系统以及安装在Ubuntu上的Apache Web服务器和你自己的应用。镜像是用来创建容器的。Docker提供了一个简单的方式用以创建新的镜像或者更新现存的镜像,甚至你可以下载其他地方提供的镜像...

2018-03-02 10:46:26 2417

转载 Docker容器部署Java web应用(容器基础上创建新镜像)

摘要:本文主要讲了如何在Ubuntu14.04 64位系统下来创建一个运行Java web应用程序的Docker容器。 创建docker镜像的两种方法第一种:启动镜像后进入容器中操作,将需要的软件或者项目移动到容器中,安装或者部署,然后退出即可第二种:编写dockerfile,将需要的镜像一层层叠加上去,比如我们要部署项目,可以先下载一个ubuntu基础镜像,然后叠加jdk,然后tomc...

2018-03-02 10:44:48 1284

原创 Shell脚本学习

Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来解释执行程序,如果熟练掌握Shell脚本,可以让我们操作计算机变得更加轻松,也会节省很多时间。一:Shell应用场景Shell能做什么将一些复...

2018-03-02 10:40:03 401

转载 MySQL读写分离详解与实践

一:mysql读写分离原理MySQL的主从复制和MySQL的读写分离两者有着紧密联系,首先部署主从复制,只有主从复制完了,才能在此基础上进行数据的读写分离。 简单来说,读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性操作,而从数据库处理非事务性操作,然后再采用主从复制来把master上的事务性操作同步到slave数据库中。1.基于程序代码内部实现 在代码...

2018-03-02 10:15:48 5769

原创 MySQL主从复制详解与实践

一:mysql主从原理1.1 基本介绍MySQL 内建的复制功能是构建大型,高性能应用程序的基础。将 MySQL 的 数亿分布到到多个系统上去,这种分步的机制,是通过将 MySQL 的某一台主机的数据复制到其它主机( Slave )上,并重新执行一遍来实现的。复制过程中一个服务器充当服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志,并维护文件的一个索引以跟踪日志...

2018-03-02 10:13:06 1175

原创 Java虚拟机学习——垃圾收集器与内存分配策略

一:Java中是如何管理对象的垃圾收集(Garbage Collection,GC),要设计一个GC,需要考虑解决下面三件事情: (1)哪些内存需要回收? (2)什么时候回收? (3)如何回收?1.1 哪些内存需要回收?根据《Java虚拟机学习——Java内存区域与内存溢出异常》中介绍的java内存模型,其中,程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭;栈...

2018-03-02 10:05:09 276

原创 Java虚拟机学习——Java内存区域与内存溢出异常

一:运行时数据区域1.1 程序计数器(Program Counter Register)程序计数器(Program Counter Register),也有称作为PC寄存器。在汇编语言中,程序计数器是指CPU中的寄存器,它保存的是程序当前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当CPU需要执行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址...

2018-02-08 15:48:25 683

原创 Java虚拟机学习——类加载机制

一:类加载机制概述虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 在java中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会带来一些性能开销,但是却为java应用程序提供了高度的灵活性,java动态扩展的语言特性就是依赖运行期动态加载和动态链接这个特点形成的,所...

2018-02-08 15:44:26 235

原创 JDK1.8源码解析——String

String源码分析 一:类的声明在java.lang包中,此类被final修饰,表示String的对象是不可变量,不可继承。 String类实现了Serizlizable,Comparable, CharSequence接口。 Serizlizable接口没有任何方法和域,仅用于标识序列化的语意,实现此接口的类是可序列化的,是java提供的通用数据保存和读取的接口。 Com...

2018-02-02 09:38:14 428

转载 成为Java顶尖程序员 ,看这11本书就够了

“学习的最好途径就是看书”,这是我自己学习并且小有了一定的积累之后的第一体会。个人认为看书有两点好处: 1.能出版出来的书一定是经过反复的思考、雕琢和审核的,因此从专业性的角度来说,一本好书的价值远超其他资料2.对着书上的代码自己敲的时候方便“看完书之后再次提升自我的最好途径是看一些相关的好博文”,我个人认为这是学习的第二步,因为一本书往往有好几百页,好的博文是自己看书学习之后的一些

2018-02-02 09:37:56 471

原创 解决微信公共号开发出现 redirect_uri域名与后台配置不一致,错误码10003 错误

做微信网页OAuth2.0 授权开发,进入授权页面是报错,redirect_uri域名与后台配置不一致,错误码10003 问题原因:可能OAuth2.0网页授权页面没有填写授权回调页面域名,或者域名前面加了 http://解决方法: 到 微信公共平台->测试号管理->体验接口权限表->网页服务->网页帐号->修改 ,填写域名

2018-02-01 21:01:05 53160 9

原创 微信公共号开发教程java版——微信网页授权(八)

一:微信网页授权介绍官网详细介绍:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839 如果用户在微信客户端中访问第三方网页,公众号可以通过微信网页授权机制,来获取用户基本信息,进而实现业务逻辑。关于网页授权回调域名的说明1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接

2018-02-01 20:59:12 2825

原创 微信公共号开发教程java版——获取用户基本信息(UnionID机制)(七)

一:UnionID机制说明官网详细介绍:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140839获取用户基本信息(UnionID机制)在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众

2018-02-01 20:56:03 2569

原创 微信公共号开发教程java版——实现自定义菜单(六)

一:自定义菜单文档说明自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示: 官网详细介绍:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013 请注意:1、自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。2、一级菜单最多4个汉字,二

2018-02-01 20:54:26 494

原创 微信公共号开发教程java版——公共号access_token的获取(五)

一:access_token简介为了使第三方开发者能够为用户提供更多更有价值的个性化服务,微信公众平台 开放了许多接口,包括自定义菜单接口、客服接口、获取用户信息接口、用户分组接口、群发接口等,access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。acce

2018-02-01 20:52:51 313

原创 微信公共号开发教程java版——发送消息和处理消息(四)

消息的发送和处理是在doPost方法中完成的 一:微信公众平台的通讯过程当微信用户向你的公众平台发送一条消息,实际上这条消息首先发送到微信服务器,由微信服务器向网站服务器发起另外一个请求,网站服务器返回这个请求的结果,再由微信服务器发送到微信客户端。整个消息通讯流程如下图: 上述5个步骤中,作为开发者我们主要精力都集中在步骤3上,这个步骤主实际上要有3项任务:接收来

2018-02-01 20:51:27 453

原创 微信公共号开发教程java版——请求消息,响应消息及事件消息类的封装(三)

一:封装请求信息当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。 各消息类型的推送XML数据包结构如下: 查看官网详细介绍文本消息 xml> ToUserName>ToUserName> FromUserName>FromUserName> CreateTime>1348831860CreateTime> MsgType

2018-02-01 20:48:17 734

原创 微信公共号开发教程java版——启用开发者模式,接入微信公众平台开发(二)

一:微信公众号对接的基本介绍填写服务器配置信息的介绍在微信公众平台认证之前,我们可以先申请一个测试的公众号来进行测试,这对开发人员来说还是有很大好处的! 为什么要申请测试账号?主要是因为测试账号比我们没有认证的微信账号权限大一点。足够测试我们的接口了,点击http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

2018-02-01 20:42:21 553

原创 微信公共号开发教程java版——基础知识和环境搭建(一)

一:微信公共号基础知识简介微信公众号是开发者或商家在微信公众平台上申请的应用账号,该帐号与QQ账号互通,通过公众号,商家可在微信平台上实现和特定群体的文字、图片、语音、视频的全方位沟通、互动 。形成了一种主流的线上线下微信互动营销方式。分类及区别微信公众号分为订阅号和服务号。 1、订阅号,任何组织和个人都可以申请,每天群发一条信息,认证后有自定义菜单。没有高级接口,不能用

2018-02-01 20:30:17 432

原创 nginx中修改server_name无效,修改为www.wecharttest.com无法访问,通过localhost可以访问

最近在看微信公共号,需要通过软件Nginx,直接使用自己的内网作为电脑的服务器来进行一系列的操作以及调试(实现内网穿透,将内网的服务器映射到外网给别人访问) 但是在Nginx中,把server_name配置成自己的域名www.wecharttest.com无效。 解决方法:linux下:sudo vi /etc/host增加 www.wecharttest.com 127.0.

2018-02-01 20:25:20 3132

原创 Nginx学习——session共享(二)

上一篇博文说到了nginx session共享问题。由于 nginx 是随机分配请求,假设一个用户登录时访问网站登录时被分配到 192.168.43.3:8080 上,然后进行了登录操作,此时该服务器上就会有该用户登录的 session 信息,然后登陆后重定向到网站首页或个人中心时,此时如果被分配到 192.168.43.3:8081 上,那么这台服务器上没有该用户 session 信息,于是又会

2018-01-26 09:31:19 427

原创 Nginx学习——反向代理与负载均衡(一)

一:环境配置我本地是Windows系统,使用 Oracle VM VirtualBox 虚拟机安装一个虚拟的Linux系统,安装jdk1.8,nginx,两个tomcat 一般需要用到三台服务器,一台 nginx 服务器,两台正式部署项目的服务器。为了方便操作,我只在一台服务器上面安装了一个nginx和两个tomcat(端口不一样)二:配置tomcat集群首先在服务器上安装

2018-01-26 09:31:08 409

原创 Dubbo学习——Dubbo-admin管理平台搭建(三)

一:前言上一篇博文介绍的是dubbo的使用,包括有注册中心,消费者,提供者的使用,但是并不能看到有哪些消费者和提供者,为了更好的调试,发现问题,解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。二:下载与配置打包dubbo-admin的下载,可自行到官网下载:https://github.com/alibaba/dubbo 但

2018-01-26 09:30:51 265

原创 Dubbo学习——Dubbo简单入门Demo(二)

本文采用Dubbo与Zookeeper、Spring框架的整合。整个项目的代码已经上传到我的github https://github.com/wangyuanjun008/wyj-dubbo-demo.git 欢迎查看。 主要是以下几个步骤: 1. 安装Zookeeper,启动; 2. 创建MAVEN项目,构建Dubbo+Zookeeper+Spring实现的简单Demo; 3.

2018-01-25 09:11:45 248

原创 使用DaoCloud docker镜像加速器

使用 Docker 的时候,需要经常从官方获取镜像,但是由于显而易见的网络原因,拉取镜像的过程非常耗时,严重影响使用Docker的体验。由于国内访问直接访问dockerhub网速比较慢,拉取镜像的时间就会比较长,甚至下载失败。一般我们会使用镜像加速或者直接从国内的一些平台镜像仓库上拉取。 我之前准备用阿里云的加速器的,试了好长时间没有成功,于是改用DaoCloud,下面向大家介绍在windows

2018-01-25 09:11:36 1285

原创 Quartz学习——SSM和Quartz集成详解(四)

下面介绍SSM+Quartz的示例,项目地址: quartz-spring一:环境介绍 工具:Spring Tool Suite + Mysql 框架:Spring+SpringMVC+Mybatis 前端: easy ui 日志:logback 构建工具:Maven Quartz版本:2.2.3 二:SSM+Quartz集成详解1.项目结构

2018-01-25 09:11:24 2226

原创 Quartz学习——Spring和Quartz集成详解(三)

下面介绍Spring集成Quartz的示例,项目地址: quartz-spring 介绍Spring和Quartz集成存储方式使用的是RAM方式和JDBC方式! jar包依赖 UTF-8 4.0.2.RELEASE 1.7.7 4.11 2.4.0 5.1.30 2.2.3 1.1

2018-01-25 09:11:08 256

原创 Quartz学习——Quartz简单入门Demo(二)

下面介绍Quartz入门的示例,项目地址: quartz-demo 由于Quartz的存储方式分为RAM和JDBC,分别对这两种进行简单的说明。并附上代码! 首先需要添加Quartz的依赖 ,我使用的是quartz.2.2.3版本! org.quartz-scheduler quartz 2.2.3 org.quartz-scheduler

2018-01-25 09:09:57 314

原创 Docker之创建并进入mysql容器

本文介绍docker如何创建并进入MYSQL容器。运行”docker pull mysql”获取mysql镜像[root@localhost ~]# docker pull mysql Using default tag: latest latest: Pulling from library/mysql 85b1f47fba49: Pull complete 567

2018-01-25 09:09:46 2500 1

转载 常用mysql命令大全

1、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到

2018-01-25 09:09:26 180

原创 Dubbo学习——Dubbo介绍(一)

互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。 Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,

2018-01-25 09:09:09 286

tomcat-redis-session-manager支持tomcat7

因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。

2018-01-19

空空如也

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

TA关注的人

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