自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java 银行存取款模型的线程同步问题

关于线程同步,网上也有很多资料,不过不同的人理解也不大一样,最近在研究这个问题的时候回想起大学课本上的一个经典模型,即银行存取款模型,通过这个模型,我个人感觉解释起来还是比较清楚的。本文结合自己的思考对该模型进行一个简单的模拟,阐述一下我对线程同步的理解。场景模拟  接下来使用java对该问题进行模拟。在研究这个问题时会忽略掉现实系统中的很多其他属性(官网:www.fhadmin.

2017-08-28 13:10:33 1589

原创 Java多线程 —— 线程怎么来的?

并发处理的广泛应用是使得amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,是人类压榨计算机运算能力的最有力武器。并发并非一定得用多线程,多进程也可以,不过java里面谈论并发,大多数与线程脱不开关系。因此我们从线程说起。本文主要包含以下内容:线程的实现线程的调度线程状态切换线程的实现线程是比进程更轻量级的调度执行单位,在linux里面,线程和进程没有什

2017-08-28 13:08:29 360

原创 浅谈Java的Fork/Join并发框架

1. Fork/Join是什么  Oracle的官方给出的定义是:Fork/Join框架是一个实现了ExecutorService接口的多线程处理器。它可以把一个大的任务划分为若干个小的任务并发执行,充分利用可用的资源,进而提高应用的执行效率。  Fork/Join实现了ExecutorService,所以它的任务也需要放在线程池中执行。它的不同在于它使用了工作窃取算法,空闲的线程

2017-08-28 13:06:54 799

原创 20个非常有用的Java程序片段

下面是20个非常有用的Java程序片段,希望能对你有用。内容比较早,有些函数可能过时了,但是总体思路是不错滴,供参考。1、字符串有整型的相互转换String a = String.valueOf(2);   //integer to numeric string int i = Integer.parseInt(a); //numeric string to an int 

2017-08-28 13:05:28 462

原创 MapReduce原理

MappeReduce的一般程序流程由三个类组成——Mapper类,Reduce类,Driver类。Mapper类:敲黑板!(官网:www.fhadmin.org)重点:第十二行,IntWritable v = new IntWritable();重点二:当我们在第十行写完的时候,关于第十四十五十六行的内容可以由自动生成的方式生成。输入“map”,就会出现自动提示内

2017-08-28 13:00:59 468

原创 JAVA 单列集合总结

Collection 接口add()remove()contains()clear();size();迭代器遍历(普通迭代器,不能再遍历过程中修改集合的长度)List接口 单列集合 有序可重复 有索引add(index,obj)remove(index)get(index)set(index,obj)List的遍历for循环迭代器

2017-08-16 17:00:06 584

原创 java IO流整理

Java流操作有关的类或接口:Java流类图结构: 流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,官网:www.fhadmin.org 方便更直观的进行数据操作。  IO流的分类根据处理数据类型的不同分为:字

2017-08-16 16:58:18 305

原创 Java 链接mysql数据库操作

java链接mysql首先加载mysql在java中的jdbc驱动  Class.forName("com.mysql.jdbc.Driver");其次建立与mysql已有数据库建立连接   String url = "jdbc:mysql://localhost:3306/mydata?userUnicode=true&characterEncoding=utf-

2017-08-16 16:54:15 470

原创 java文件读取

读取可以是以字节为单位读取,可以是以字符为单位,也可以是一整行。  使用FileInputStream就是按照字节读取的一次读取一个字节,常用于读取二进制文件如图片,声音,影像等。 1 try { 2 aFileInputStream=new FileInputStream(aFile); 3 // FileInputStrea

2017-08-16 16:51:50 293

原创 如何用java实现数据脱敏

数据脱敏是指对某些敏感信息通过脱敏规则进行数据的变形,实现敏感隐私数据的可靠保护。在涉及客户安全数据或者一些商业性敏感数据的情况下,在不违反系统规则条件下,对真实数据进行改造并提供测试使用,如身份证号、手机号、卡号、客户号等个人信息都需要进行数据脱敏,数据库安全技术之一。比如我们现在有个user表,含有名字,性别,邮箱,电话号码等字段,但是当查看这些数据时,我们又不希望这些数据被暴露,这时

2017-08-16 16:46:56 22293 4

原创 Maven 构建配置文件

什么是构建配置文件?生成配置文件是一组可以用来设置或覆盖 Maven 构建配置值的默认值。使用生成配置文件,你可以针对不同的环境,如:生产V/S开发环境自定义构建。配置文件中指定 pom.xml 文件使用其配置文件/配置文件元素和多种方式来触发。配置文件修改 POM 后,在编译的时候是用来给不同的目标环境参数(例如,开发,测试和生产环境的数据库服务器的路径)。生成配置文件的

2017-08-09 10:30:15 369

原创 项目架构开发:集群部署

单机部署很简单,这里就不演示了,要注意的是我们用的是session来保存登录信息虽然Session不安全,比如sessionid被截获那就可以在任何地方用你的账号登录;但是大多数企业内部系统都无需那么高的安全级别,所以这个不用太担心;现在我们开始部署多个相同的应用,让他署集群运行,从而提高系统性能; 1、Application Request Route既然

2017-08-09 10:29:06 896

原创 SpringMVC+MyBatis 事务管理二

SpringMVC+MyBatis 事务管理二前言     上篇主要从编程式事务和声明式事务注解的形式来了解了事务,而这篇我们针对AOP的方式来实现事务。先回顾下事务的基础知识事务的隔离级别和事务的传播行为。使用aop 配置事务时注意引用aspectjweaver,要不然程序启动起来就会报错,找不到相关类 事务隔离级别隔离级别是指若干个官网:www.fh

2017-08-09 10:27:22 312

原创 Java8-函数式接口理解及测试

1.  函数式接口的理解  根据重构的思想,需要把容易变化的模块进行抽象并封装起来,从这个点来看,Java8新引入的函数式接口就是基于这个思想进行设计的。2. 函数式接口定义   2.1 自定义如下    需要FunctionalInterface关键字显示声明: @FunctionalInterface    public interface

2017-08-09 10:20:13 446

原创 Java项目经验——程序员成长的钥匙

Java就是用来做项目的!Java的主要应用领域就是企业级的项目开发!要想从事企业级的项目开发,你必须掌握如下要点:1、掌握项目开发的基本步骤2、具备极强的面向对象的分析与设计技巧3、掌握用例驱动、以架构为核心的主流开发方法没有人愿意自己一辈子就满足于掌握了一些代码实现的技巧,别人告诉你要实现什么,你就用代码堆砌来实现别人的要求!你必须学会从整个项目的角度去思考!你必须学会假如

2017-08-09 10:18:20 432

原创 java 静态代码块、非静待代码块、静态变量的执行次序

关于静态代码块、非静待代码块、静态变量的执行次序,大的问题相信大家都明白,但是最近有同学问到了如下问题,觉得难以理解其输出。其问题的代码如下:public class StaticTest {    public static void main(String[] args) {        staticFunction();    }    static StaticT

2017-08-09 10:14:28 278

原创 JVM 性能优化详解

Jvm入门前言堆:比方说有一个xxx.class文件,里面有一些类的定义,这些类的定义需要放在某些地方,类的定义放在方法区,方法区也叫永久区,在程序运行中,我会不断的new 对象,list,hashMap,这些对象存放了大量的数据,给它开辟了一块比较大的空间,主要是保存对象,这块空间称为堆。栈:我的程序在运行过程中,本质上启动一个线程,就算没有thread,也有

2017-08-08 11:07:18 455

原创 SpringMVC返回Json失败,请检查是否配置了Jackson

背景需要一套干净的Spring+Spring MVC+Mybatis框架,框架写到返回Json的环节报错了。问题无法Json,报406解决需要配置Json工具包,这里用JacksonMaven Jackson123456789

2017-08-08 11:06:02 716

原创 maven中手动将jar包安装进仓库的方法及问题

众所周知,我们只要在pom.xml文件中进行配置,maven就会自动下载jar包到本地仓库,那么,如果我们自己写一个jar包自己用,那么便无法通过配置来引用这个包,需要我们手动将包安装进仓库中。    我们使用命令mvn install:install-file  -Dfile=your-jar-file-path  -DgroupId=com.your.group  -Dartifa

2017-08-08 11:04:34 2336

原创 java中return与finally的执行顺序分析(根据字节码分析)

大家应该都知道,在java中无论是否出异常,finally中的代码都会被执行的,所以我们经常在里面做些释放连接的工作。 但如果有返回值,return与finally是怎么样执行的呢?首先看下面代码。 Java代码  public class App {            public String getName(String name){   

2017-08-08 10:55:37 500

原创 JAVA文件上传-原始的SERVLET方式

前言:干了这几个项目,也做过几次文件上传下载,要么是copy项目以前的代码,要么是百度的,虽然做出来了,但学习一下原理弄透彻还是很有必要的。刚出去转了一圈看周围有没有租房的,在北京出去找房子是心里感觉最不爽的时候,没有归属感,房租还不便宜,RT,不能好高骛远,还是脚踏实地一点一点学技术吧,终将有一日,工资会涨的。java文件上传传统的文件上传,不用jquery插件的话,就是

2017-08-07 09:52:40 875

原创 详解Tomcat 配置文件server.xml

前言Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛。server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的一个组件;通过对xml文件中元素的配置,可以实现对Tomcat中各个组件的控制。因此,学习server.xml文件的配置,对于了解和使用Tomcat至关重要。本文将通过实例,介绍serv

2017-08-07 09:51:12 325

原创 使用Spring Cloud和Docker构建微服务架构

如何使用Spring Boot、Spring Cloud、Docker和Netflix的一些开源工具来构建一个微服务架构。本文通过使用Spring Boot、Spring Cloud和Docker构建的概念型应用示例,提供了了解常见的微服务架构模式的起点。我选择了一个老项目作为这个系统的基础,它的后端以前是单一应用。此应用提供了处理个人财务、整理收入开销、管理储蓄、分析统计和创建简

2017-08-07 09:49:13 1163

原创 分布式web架构中对session同步的常用处理方法以及优缺点

写在前面最近在读一本来自淘宝技术团队大牛的书,名字叫《大型网站系统与Java中间件实践》。开篇的章节详细地介绍了一个网站架构由小变大不断演进的过程,其中从单机架构升级到集群架构的过程中着重介绍了关于session同步问题, 这也是很多人在聊到分布式时绕不过去的话题。下面就整理下书中的内容,也算是做个读书笔记,方便以后参考。问题从哪来做web开发的同学应该对session

2017-08-07 09:48:02 300

原创 ServerSocket与Socket类

ServerSocket与Socket类TCP套接字协议:TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢。使用TCP进行连接的时候会有三次握手,之后才建立起服务器与客户端的连接,因为TCP的链接习惯是询问对方机器是否存在,不存在就不会建立连接,存在才会建立连接。示意图:ServerSocket类:在Java中想

2017-08-05 11:48:53 437

原创 java+Swing打包成exe可安装文件(可在无jdk环境机器上运行)

先用exe4j(此处用的是4.4.4版本)将jar打包成exe可执行文件,之后用Inno Setup(此处是5.5版本) 将exe文件及jre打包成可安装文件,使其可在没有java环境的机器上运行 1、 先将所用到的系统资源放到一个资源文件夹中,如数据库、图片、声音文件、jre等等 2、将系统制作成jar包,用fatjar打包工具将系统打包,选择导出路径,选择改程序

2017-08-05 11:47:36 5680

原创 分享一个:interrupt、interrupted和isInterrupted的区别,写的很好

1、interrupt() interrupt方法用于中断线程。调用该方法的线程的状态为将被置为"中断"状态。 注意:线程中断仅仅是置线程的中断状态位,不会停止线程。需要用户自己去监视线程的状态为并做处理。支持线程中断的方法(也就是线程中断后会抛出interruptedException的方法)就是在监视线程的中断状态,一旦线程的中断状态被置为“中断状态”,就会抛出中断异常。 2、

2017-08-05 11:43:58 668

原创 一个老程序员的忠告:不要一辈子靠技术生存

一个老程序员的忠告:不要一辈子靠技术生存我现在是自己做,但我此前有多年在从事软件开发工作,当回过头来想一想自己,觉 得特别想对那些初学JAVA/DOT。NET技术的朋友说点心里话,希望你们能从我们的体 会中,多少受点启发(也许我说的不好,你不赞同但看在我真心的份上别扔砖头啊). 一。 在中国你千万不要因为学习技术就可以换来稳定的生活和高的薪水待遇,你千 万更不要认为

2017-08-05 11:42:08 1637 1

原创 java中调用kettle转换文件

通过命令行也能够调用,然后java中调用命令行代码也能够。这样没有和java代码逻辑无缝集成。本文说明kettle5.1中假设通过其它API和java代码无缝集成;网上大多数资料都是低版本号的。在kettle5.x中已经不能执行。1、       须要哪些jar文件以kettle开头的是必须,上图最以下三个也要;红色框中的两个是我測试转换用到的。各自是生成UUID和文件

2017-08-04 11:29:26 3072

原创 springmvc和easyui使用ajax前台后台互传数据,假删除提示警告问题。

前台//删除 多/单条数据function del(cid){ var id=‘‘; if(cid==‘-1‘){ if(getSelections().length > 0){ id=getSelections(); }else{ $.messager.alert("提示", "请选择要删除

2017-08-04 11:28:37 794

原创 爬虫框架webmagic与spring boot的结合使用

1. 爬虫框架webmagicWebMagic是一个简单灵活的爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。1.1 官网地址官网文档写的比较清楚,建议大家直接阅读官方文档,也可以阅读下面的内容。地址如下:官网:http://webmagic.io中文文档地址: http://webmagic.io/docs/zh/Engli

2017-08-04 11:27:30 4518

原创 Java的LockSupport.park()实现分析

LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语。LockSupport实际上是调用了Unsafe类里的函数,归结到Unsafe里,只有两个函数:1 public native void unpark(Thread jthread); 2 public native void park(boolean isAbs

2017-08-04 11:25:12 338

原创 Java基础-构造器

1.构造器构造器就是类创建对象的初始化方法。它的名字与类名相同。 假设没有写有构造器的情况下,虚拟机会自动加上一个没有参数的构造器,如果【学Java, 写有构造器,那么虚拟机就不会在加上构造器了。public class Test1 { public Test1() { System.out.println("我是构造器!"); }}2.构造器重载构造器就是一

2017-08-03 16:19:37 319

原创 Java 9 揭秘全目录汇总

Java 9 揭秘全目录汇总Tips做一个终身学习的人。当写这篇文章时,关于Java 9的学习就先告一段落了。首先介绍一下背景,大概两个月前,我突然有兴趣想看看Java 9,当时读了一本英文原著《Java 9 Revealed: For Early Adoption and Migration》,对Java 9 的最新改变做了非常全面的介绍。大家也都

2017-08-03 16:16:02 378

原创 Raft协议安全性保证

分布式系统中主要的问题就是如何保持节点状态的一致性,不论发生任何failure,只要集群中大部分的节点可以正常工作,则这些节点具有相同的状态,保持一致,在client看来相当于一台机器。  一致性问题本质就是replicated state machines,即所有结点都从同一个state出发,都经过同样的一些操作序列(log),最后到达同样的state。其中保证各个节点执行相同的操作序列

2017-08-03 16:13:18 711

原创 基于Spring Cloud的微服务构建学习-1 基础知识

基于Spring Cloud的微服务构建学习-1 基础知识什么是微服务架构  微服务是系统架构上的一种设计风格,它的主旨是将一个原本独立的系统拆分成多个小型服务,这些小型服务都在各自独立的进程中运行,服务之间通过基于HTTP的RESTful API进行通信协议。    每个微服务都维护者自身的数据存储、业务开发、自动化测试案例以及独立部署机制。由于有了轻量级的通

2017-08-03 16:10:05 642

空空如也

空空如也

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

TA关注的人

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