自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go 并发——goroutine&&chan

        这段时间在研究go。在看过基本语法后先看了go的并发。看过groutine和chan后写了一个利用无缓存chan生产和消费数据的代码。算是一个helloworld,写之前感觉没有什么问题,写的过程中发现问题多多。          算法描述如下:定义一个全局的int32数据values作为producer的数据源。producer依次从values中读取数据并放入通道ch中。co...

2018-08-01 15:43:08 1130

原创 java线程状态——jstack的应用

jstack是java提供的查询jvm栈信息的小工具。 在之前的文章中已经广泛的使用它,文章参考如下: java 线程状态 java 线程状态——情况续说 java线程状态——java线程状态图 java线程状态——死锁 当我们要使用jstack时,不可避免的重要入参就是pid(jvm的启动进程) 我们可以通过jps完成这个工作,jps有四个操作选项,qvml 其实

2017-02-14 17:19:02 772 1

原创 java线程状态——死锁

参考: java 线程状态 java 线程状态——情况续说 java线程状态——java线程状态图 死锁,概念有很多,可以google 现在列出死锁的模拟代码和jstack的输出 一方面是理解死锁,一方面是学习jstack找出死锁,进行代码调优 import java.util.concurrent.TimeUnit; public class e {

2017-02-14 17:11:31 1997

原创 java线程状态——java线程状态图

java线程状态图,网上有很多资源,无外乎两种,如下: 图一 图二 图二是比较多的,可以看出来我贴出的链接这个博主挺有心的,还把右下角的水印给抹去了,赤裸裸的伪原创心理呀。 还有几张图说的也挺不错的,链接如下: 挺不错的图 这个链接除了图以外,还要注意作者的分类方式,通过层层递进完善这张图,很不错。 还有一张图是我最欣赏的,不仅列出了状态,还把状态的触发条

2017-02-14 17:03:08 1484

原创 java 线程状态——情况续说

参考链接: java 线程状态 situation1/2使得线程状态从RUNNING转化为WAITING/TIMED_WAITING 还有一种情况就是IO阻塞,例子如下: import java.util.concurrent.ArrayBlockingQueue; public class c { private static ArrayBlockingQueue

2017-02-14 16:46:35 795

原创 java 线程状态

java定义的线程状态:NEW/RUNNABLE/WAITING/TIMED_WAITING/BLOCKED/TERMINATED java的线程方法使得线程的状态转换如下: 1          sleep                                             RUNNING--->TIMED_WAITING 2           join

2017-02-14 16:13:36 879

原创 常见文件类型处理: 属性文件/CSV/EXCEL/HTML/压缩文件

转载一篇文件处理的文章 链接如下: 点击打开链接

2017-02-10 10:24:15 620

转载 答《mysql事务-隔离级别》

google了一篇知乎的文章,关于mysql事务的隔离级别的实现原理,感觉讲的很不错。从理论上上回答了很多问题。 着重参考“沈杰”的回复: 连接如下mysql事务的隔离级别实现原理 内容粘出来如下: 作者:沈杰 链接:https://www.zhihu.com/question/30272728/answer/132403859 来源:知乎 著作权归作者所有,转载请联系作

2017-02-07 16:52:49 987

原创 mysql事务-隔离级别

事务隔离级别一般分为四个层级: READ-UNCOMMITTED; 导致--->脏读、不可重复读、幻读 READ-COMMITTED;        导致--->------、不可重复读、幻读 REPEATABLE-READ;      导致--->-------、---------------、幻读 SERIALAZIBLE;                 导致--->-------、

2017-02-07 16:06:05 518

原创 微信开发-发送客服消息

参考连接点击打开链接 模板消息不好审核通过,因此有时候我们需要发送客服消息。 客服消息在发送“图文消息”的时候不会夹带客服图标,而是一整块的消息,体验相对比较好。 下边描述一下发送客服消息的大概过程。 1、公众号配置 发送客服消息需要应用的服务响应在线,因此首先在公众平台进行配置(开发->基本配置),如图所示: 需要注意的是: 应用在线,代码如下所示: //

2017-02-07 15:13:41 2516

原创 新概念英语学习笔记-1

爆破音 Is this your handbag? 这是你的。。。? Yes,it is. This is my... cloakroom Here's suit 男士西装 skirt 女士短裙 shirt 男士衬衫 blouse 女式衬衫 coat 外套 handbag 女士手提包 dress 女士连衣裙 miss未婚女士 glad to meet

2017-01-26 12:12:52 1348

原创 shell 编程之运算符列表

算数运算符列表 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 10。 * 乘法 `expr $a \* $b` 结果为  200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $

2017-01-23 11:41:30 419

原创 微信开发-发送模板消息

为支撑公司业务,需要使用微信的模板消息,于是乎进行了下相关的调研,现将调研内容进行如下记录。 首先微信模板消息没有创建模板消息的接口。更新模板消息有两种方式(个人理解): 1、修改行业,然后选择微信已经提供的模板,限制有如下两点:   a、一个月只能修改一次行业;   b、即使修改行业,也不一定找到合适的模板; 2、自定义模板:    从模板库中添加->帮助我们完善模板库(右上角)

2017-01-22 11:56:29 1127

原创 微信开发-获取用户关注公众号的状态(是否关注公众号)

公司业务需要获取用户观众公众号状态,即确定进入系统的用户是否关注了该公众号,根据这个结果进行相应的动作。 获取用户信息中有subscribe这个字段,其中==1表示关注了该公众号,==0表示没有关注该公众号。 通过调研,看文档 点击打开链接 点击打开链接2 调研,只有在微信的unionid机制下才能获取这个值,而在sns(我称之为)的模式下只能获得用户头像、昵称信息

2017-01-19 10:56:11 7717 2

原创 mysql数据类型-数值型

mysql的数值型分为数据整形和浮点型 整形数据包括以下 tinyint    1字节 -128~127/0~255 smallint  2字节 大~大 mediumint 3字节 比较大~比较大 int 4字节 很大~很大 bigint 8字节 非常大~非常大 ^_^ tinyint/smallint/mediumint/int/bigint类比为 * 定义整形数据的格式

2017-01-18 20:21:08 910

原创 微信开发-分享页面修改

微信页面分享到朋友圈、分享朋友等等,默认的是有分享格式的,比如分享给朋友,默认的图标是页面的第一张图片,内容是该页面的url,这个显然有些场景是不满足的。对于挑剔的产品经理一定是会有自己的设计的,比如图片、内容等。 微信js-sdk提供了关于这部分的接口,现将过程说明如下。 文档路径,在登录公众号后路径如下:点击打开链接,在左侧“微信网页开发”--“微信JS-SDK说明文档”菜单栏中 点击“

2017-01-16 15:47:38 4039 1

原创 java的vim环境配置

安装git apt-get install git 安装vundle git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim  配置 ~/.vimrc set nocompatible  filetype off  set rtp+=~/.vim/bundle/Vundle.vim 

2017-01-10 11:47:38 1307

原创 RedisTemplate 分页

利用spring redis的RedisTemplate进行分页: 场景: 现有项目若干,根据项目的创建时间(createTime)进行降序读取: 存储结构: key:proList(list) 存放项目id [ 110, 111, 112 ] key:proInfo:{proId}(hash) pro:110 { id:110, proName:p110, cre

2017-01-03 16:33:38 11019

原创 微信开发-网页授权获取用户基本信息

最近在做一个微信公众号的项目,和微信交互,获取用户基本信息是基本需求。获取用户基本信息有很多途径,现在我们讨论的是“网页授权获取用户基本信息”这种方式。 文章需要参考微信开发者文档:点击打开链接 另,会把部分java实现代码贴出来供参考。 微信公众平台通过OAUTH认证获取用户信息,这个过程大体分为以下几个步骤: 1、根据appid以及回调url获取code(时效==5min); 2、根

2016-12-26 14:30:19 1268

转载 线程间的通信机制

线程开始运行,拥有自己的栈空间,但是如果每个运行中的线程,如果仅仅是孤立地运行,那么没有一点儿价值,或者是价值很小,如果多线程能够相互配合完成工作的话,这将带来巨大的价值,这也就是线程间的通信啦。在java中多线程间的通信使用的是等待/通知机制来实现的。          1.synchronied关键字等待/通知机制:是指一个线程A调用了对象O的wait()方法进入等待状态,而另一个线

2016-08-24 08:50:48 815

原创 RocketMQ(二)——TopicPublicInfo

Producer发送消息是如何得知发到哪个broker的 ?  每个应用在收发消息之前,一般会调用一次producer.start()/consumer.start(),幕后的工作就是:创建需要的实例对象,如MQClientInstance;设置定时任务,如从Nameserver中定时更新本地的Topic route info,发送心跳信息到所有的broker,动态调整线程池的大小,等等;把当前

2015-09-22 16:21:44 1426

原创 RocketMQ学习(一)

MQAdmin MQProducerClientConfig MQProducerInner MQClientManager MQClientInstance MQClientAPIImpl

2015-09-15 15:03:28 493

转载 java 动态代理机制分析及扩展

引言 Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。本文首先从 Java 动态代理的运行机制

2015-08-21 14:54:33 719

原创 时间戳效率比较

package now.start; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Calendar; import java.util.Date; import ja

2015-05-26 10:24:18 1711

原创 并发多阶段任务的执行——Phaser

java并发API从java7提供了并发多阶段任务的抽象Phaser。如果我们有并发任务且需要分段执行的时候 我们可以考虑Phaser这个类。 Phaser有一个特别的地方,即不需要处理InterruptedException除了(awaitAdvanceInterruptibly(int phaser)方法) 我们模拟一种场景: 我们有三个任务,分别从三个不同的文件夹及其子文件夹

2015-04-08 19:01:55 1120

原创 zookeeper——分布式锁

我们可以把zookeeper看做是一个高可用的分布式文件系统。借助于zookeeper的特性,我们可以很方便的实现分布式的一些服务 其中典型的应用场景有:服务配置、分布式锁和分布式队列。 本节,我会讲解分布式锁的实现。 我们借助于zk的短暂有序节点(EPHEMERAL_SEQUENTIAL)和zk的消息通知机制实现分布式锁。 分布式锁的一般实现算法是: 1、在锁znode节点下创建名为l

2015-04-02 10:35:16 1339

原创 线程同步辅助类——Exchanger

以下是java6中文API对Exchanger的解释: 可以在对中对元素进行配对和交换的线程的同步点。每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象。Exchanger 可能被视为 SynchronousQueue 的双向形式。Exchanger 可能在应用程序(比如遗传算法和管道设计)中很有用。 用法示例:以下是重点介绍的一个类,

2015-04-01 13:32:42 808

原创 java https访问

最近在研究java 网络编程,在把reilly的书看完后想要试着写一个小玩意儿。 在开始的时候便遇到了麻烦,那就是java 的https访问,关于https访问的细节,书里并没有讲解。 因此从昨天下午到现在是一头雾水。在尝试了集中方法后,发现都不好使,用到了许多不熟悉的ssl的类。 经过多次的试验,尝试出了一条解决的办法,这个办法分为两步: 1、加载https网站的证书,至于怎么加载,在前

2015-03-25 13:43:51 683

原创 java https添加证书

添加证书:keytool -keystore "C:\Program Files\Java\jdkihu\jre\lib\security\cacerts" -importcert -alias ca12306 -file E:\srca12306\srca.cer 默认密码:changeit 查看证书:keytool -list -alias ca12306 -keystore "C:\Pr

2015-03-25 11:44:43 17804

原创 java NIO(十) 缓冲区——compact方法介绍

注意java6帮助文档对compact方法的介绍 compact public abstract ByteBuffer compact()压缩此缓冲区(可选操作)。 将缓冲区的当前位置和界限之间的字节(如果有)复制到缓冲区的开始处。即将索引 p = position() 处的字节复制到索引 0 处,将索引 p + 1 处的字节复制到索引 1 处,依此类推,直到将索引 limit() - 1 处

2015-02-27 11:07:21 8459

原创 java 并发编程(四)之临界区中使用条件

我们可以使用synchronized机制实现线程同步,通过保证“临界区”的访问顺序来保证共享资源状态的正确性。 然而,更多情况是我们不仅需要获得对“临界区”的访问,在获得访问权限后也要判断更多的条件来确定是否 要做出后续的操作。 典型的问题就是“生产者-消费者”问题,当生产者A获得对缓存的访问后,还要判断目前缓存是否可以生产, 否则的话就要让出时间片,等待合适的实际。 我们通过代码来进行

2015-02-12 09:14:58 608

原创 java 并发编程(三)之synchronized

上两个章节:java 并发编程(一)之synchronized、java 并发编程(二)之synchronized实例 中讲解了synchronized关键字对同步的控制以及演示了在修饰方法的例子。 我们会发现添加synchronized关键字的方法能够完成多个线程对于同一个方法的同步,但显然不是很好的实现,因为首要 问题就是“效率”,很明显,我们采用高并发设计程序目的就是最大限度的利用

2015-02-11 09:15:49 705

原创 java NIO(九) 缓冲区——字节缓冲区&&直接缓冲区

字节缓冲区,顾名思义“缓冲”对象是字节,但是字节缓冲区又是一个特殊的缓冲区,因为字节是操作系统及其IO设备使用的基本数据类型。 字节缓冲区和其他缓冲区最明显的区别在于,他们可以成为通道所执行的IO的源头和目标。通道只接收ByteBuffer作为参数。 直接缓冲区: 在jvm中,字节数组可能不会在内存中连续存储,或者无用存储单元收集可能随时对其进行移动。在java中,数组是对象,而数据存储在对

2015-02-09 12:29:01 2433

原创 java NIO(八) 缓冲区——视图缓冲区实例

我们通过一个实例BufferCharView来说明视图缓冲区和原始缓冲区的关系; 我们创建一个原始的字节缓冲区,存入“Hi!”; 在创建这个字节缓冲区的一个字符缓冲区视图,打印连个缓冲区的position、limit、capacity和内容进行观察: package com.z; import java.nio.Buffer; import java.nio.ByteBuffer;

2015-02-09 11:22:56 1481 1

原创 java NIO(七) 缓冲区——视图缓冲区

正如上一章节所说的,大多数的视图缓冲区都是字节缓冲区的视图; 本节我们用ByteBuffer举例; ByteBuffer有这么六个方法来创建对应的视图缓冲区: public abstract CharBuffer asCharBuffer()创建此字节缓冲区的视图,作为 char 缓冲区。 新缓冲区的内容将从此缓冲区的当前位置开始。此缓冲区内容的更改在新缓冲区中是可见的,反之亦然;这两个缓

2015-02-09 10:59:31 1032

原创 java NIO(六) 缓冲区——复制缓冲区

当一个管理其他缓冲区所包含的数据元素的缓冲区被创建时,这个缓冲区被称为视图缓冲区。 大多说的视图缓冲区都是ByteBuffer的视图。 本章节的“复制缓冲区”和下一个章节将要讲解的“视图缓冲区”很有联系,我们要注意。 本章节我们还是以CharBuffer为例,先介绍CharBuffer类中定义的几个复制缓冲区的方法: public abstract CharBuffer asReadOnl

2015-02-09 10:13:28 748

原创 java NIO(五) 缓冲区——创建缓冲区

NIO有两种方式创建缓冲区:分配、包装 我们以CharBuffer为例进行说明: 一、分配方式:allocate 下面是java6对CharBuffer的allocate的定义: public static CharBuffer allocate(int capacity)分配新的字符缓冲区。 新缓冲区的位置将为零,其界限将为其容量,其标记是未定义的。它将具有一个底层实现数组,且其数组偏

2015-02-09 09:43:06 1180

原创 java 并发编程(二)之synchronized实例

“java 并发编程(六)之synchronized”介绍了java控制“临界区”访问的第一种方法“synchronized”,上节讲到synchronized方式主要注意这么几点 1、临界区的概念; 2、临界区的重入; 3、synchronized修饰静态方法的特殊性,如果静态方法也修改了“临界区”的公共资源,那么要注意,可能会出现并发问题; 这里我举出了个synchronized的使用

2015-02-06 15:58:19 675

原创 java 并发编程(一)之synchronized

对“共享资源”的访问为了保证正确性,引入了“临界区”的概念(critical section) 对于“临界区”的访问java通常使用synchronized和锁进行。 对于“临界区”的访问策略是,当线程A要访问“临界区”时会先进行判断,如果该“临界区”中有其他的线程存在,那么线程A将休眠等待获得访问许可。 java中,被synchronized修饰的对象将是线程安全的,换句话说: java

2015-02-06 11:38:44 539

原创 java NIO(四) 缓冲区——大端字节书序 小端字节顺序

处理器是大端还是小端关键看处理器新片,不同的厂商可能不同,intel遵循小端字节顺序。 大端字节顺序: 小端字节顺序: java中java.nio.ByteOrder对象用来描述和判断jvm运行的处理器的字节顺序。

2015-02-05 17:24:01 1856

空空如也

空空如也

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

TA关注的人

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