自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙海峰的博客

今日原上草,明日炉中烧。

  • 博客(53)
  • 资源 (15)
  • 收藏
  • 关注

原创 Leetcode No.94 二叉树的中序遍历(循环法,含先序、中序、后序通用解解题技巧)

二叉树的中序遍历题目描述题目分析先序遍历的场景实现代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } ...

2019-07-25 00:47:00 251

原创 【阿里面试题】JAVA多线程统计文件夹大小

阿里面试题,使用多线程统计文件夹大小

2019-05-20 22:47:47 779

原创 如何正确的做技术选型

概述技术选型是项目的根基,如果选择了不适合自己业务场景的技术。初期由于业务复杂程度和业务量都比较小,所以可能感受不是十分明显,但是到了后期这将会是一个噩梦。会导致系统问题频发,极不稳定,甚至导致项目迭代举步维艰,甚至有的团队会停止新功能的开发,专门修复bug。严重时可能造成重大的经济损失。选型是怎样失败的如下所述的几种场景是典型的“凑热闹”解决问题的方式。它很容易导致错误决策,无论是糟糕的架...

2018-10-07 21:26:30 22823 6

原创 Sharding-JDBC 3.x 原理篇之基本介绍(二)附1.x~3.x版本文档

前言上一篇描述了Sharding-JDBC的历史演进过程和设计理念,本篇将具体描述Sharding-Sphere的具体功能和个版本特性。后续将对常用核心功能逐一进行分析和探讨。版本功能1.x功能列表分库分表SQL解析功能完善,支持聚合,分组,排序,LIMIT,TOP等查询,并且支持级联表以及笛卡尔积的表查询支持内、外连接查询分片策略灵活,可支持=,BETWEEN,IN等多维度分片,也...

2018-10-07 21:19:11 1569

原创 Sharding-JDBC 3.x 原理篇之基本介绍(一)

简介Sharding-JDBC是当当开源的数据库水平切分的中间件,其代表了客户端类的分库分表技术框架(这一点与MyCat不同,MyCat本质上是一种数据库代理)。Sharding-JDBC定位为轻量级数据库驱动,由客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,业务系统开发人员与数据库运维人员无需改变原有的开发与运维方式。因此Sharding-JDBC即为增强版...

2018-10-07 21:14:32 19312 1

原创 【新】CentOS7部署Kubernetes集群

由于官方文档更新速度跟不上软件版本迭代速度,导致官方文档部分内容无法使用。这里经过调试在原基础上进行适当修改,使服务可以正确运行。以下为操作步骤。安装Kubernetes 在安装Kubernetes之前要安装docker,其中docker的安装不再赘述,centos7中集成了Kubernetes源可直接安装。yum -y install kubernetes etcd其中etcd是一个分布式的

2017-07-07 18:42:41 588

原创 Java单例模式及延迟加载

单例模式是 软件开发中非常重要的模式之一。绝大多数的软件项目中都会用到单例模式。单例模式应用的好与坏在高并发访问的情况下性能差异较为明显。下面我们来看一下单例模式的具体解释。 描述:单例模式许多时候是一个全局的静态共享对象,为了保证其性能,它应该是无锁的。 下面我们来看一下具体的实现基本实现方式: 该方式的问题是无法控制对象的加载时间。该写法在程序启动时就已经加载对象了。public clas

2017-05-25 23:21:56 3766

原创 Java类的热替换

描述:以下是Java类热替换的核心代码。程序直观明了,如有错误请大家提出,本人及时改正,谢谢!ClassLoader重要类说明:findLoadedClass:每个类加载器都维护有自己的一份已加载类名字空间,其中不能出现两个同名的类。凡是通过该类加载器加载的类,无论是直接的还是间接的,都保存在自己的名字空间中,该方法就是在该名字空间中寻找指定的类是否已存在,如果存在就返回给类的引用,否则就返回 null。这

2017-05-25 16:51:43 1810

原创 Java Aio Socket异步通信例子

以下是关于Aio Socket 通信的一个例子,通过回调的方式发送和处理消息。其中要注意的是在缓冲区(ByteBuffer)中put数据以后要先进行flip(参见Nio部分解释)操作再发送数据,否则数据将会传输失败。以下是例子,直接上代码。服务端实现:public class AioServer { private AsynchronousServerSocketChannel server

2017-05-16 16:54:34 2124 1

原创 Java NIO 非阻塞socket通信案例

NIO的特性:它以块为基本单位处理数据,所有的数据都要通过缓冲区(Buffer)来进行传输。它有一个用来作为原始I/O操作的抽象通道(Channel)并提供了Selector的异步网络接口。且支持将文件映射到内存,以大幅提高I/O效率。 缓冲区中有3个重要的参数: position(位置):即缓冲区的位置,指缓冲区指针到哪个位置了。 capactiy(容量):缓冲区的总上限,如ByteBuff

2017-05-10 15:07:20 855

原创 Java无锁堆栈详解

有这样一个题目: 实现一个无锁的Stack,并写一段测试代码(多线程访问),证明这个Stack是线程安全的。分析:出于节省内存空间的考虑,使用链式的存储结构来实现。 实现该堆栈的思想为: 1、压入一个新节点时,将旧结点存入新结点中。弹出时将顶部节点中存入的上一节点取出并将其设为站定。 2、使用无锁的实现类AtomicReference作为安全的无锁局部变量对元素进行暂存。 以下为实现代码,具

2017-04-27 13:06:04 1516

原创 Java线程安全队列操作

题目如下: 使用 wait notify 实现一个队列,队列有2个方法,add 和 get 。add方法往队列中添加元素,get方法往队列中获得元素。队列必须是线程安全的。如果get执行时,队列为空,线程必须阻塞等待,直到有队列有数据。如果add时,队列已经满,则add线程要等待,直到队列有空闲空间。 实现这么一个队列,并写一个测试代码,使他工作在多线程的环境下,证明,它的工作是正确的。给出程序

2017-04-24 17:51:08 2500 1

原创 更改RemixOS分辨率

虚拟机安装RemixOS后屏幕分辨率很低,导致体验很差。经过一番折腾总结出以下方法,亲测有效 1、启动菜单中选择并进入DEBUG模式 2、重新挂载/mnt文件夹为可写入状态mount -o remount,rw /mnt3、编辑/mnt/grub/menu.list文件,在kernel一行最后添加 (分辨率可以自定义,此分辨率为mbp分辨率) DATA= DPI=265 UVESA_MOD

2017-04-09 09:11:29 11262 1

原创 JAVA并发编程-计算程序性能提升比率

并发编程的用途:并发编程用途通常用于图像处理,服务端编程需要处理大量数据的情况下使: **并发**是在同一CPU下同时执行不同的任务,有操作系统来控制时间片。: **并行**是在多CPU情况下同时处理多个任务。: **无障碍**是指允许同时读取或写入数据,读取或写入期间数据发生变更,则认为是无效数据,回滚操作,直到拿到正确的数据为止。: **无锁**是指所有线程可以进入,但如果数据发发生被修改的情况,线程之间

2017-02-18 12:32:50 3055

原创 Ubuntu安装系统根证书

Ubuntu下添加系统根证书, 只要将证书(扩展名为crt)复制到**/usr/local/share/ca-certificates**文件夹然后运行update-ca-certificates即可添加证书:$sudo cp 证书路径.crt /usr/local/share/ca-certificates$sudo update-ca-certificates删除证书:

2016-10-13 10:29:45 12189

原创 解决wine托盘图标覆盖问题

解决wine托盘图标覆盖,使用第三方托盘图标管理工具进行托管。安装sudo apt-get install indicator-systemtray-unity卸载sudo apt-get purge indicator-systemtray-unity

2016-10-08 13:11:13 4610

原创 osworkflow跨步骤应用实例

对于每一个动作,都需要存在一个无条件结果,叫做 unconditional-result。这个结果只不过 是一些指令,告诉 OSWorkflow 下一步要做什么。这一结果让组成工作流的状态机从一个状 态流转到下一个状态。 Conditional Result 是 Unconditional Result 的一个扩展。除此之外它多了一个或多个 condition 子元素。第一个判定为 tru

2016-09-29 09:44:12 1060

原创 Ubuntu 16.04 安装 Wine 及安装 PLSQL Developer

安装PLSQL的过程相对简单,只需安装wine即可,PLSQL目前尚未发现依赖问题。系统版本:Ubuntu 16.04 PLSQL版本:PLSQL 11 ORA版本:11.2第一步: 安装最新版Wine#开启32位支持$ sudo dpkg --add-architecture i386#添加密钥$ sudo add-apt-repository ppa:wine/wine-builds

2016-08-31 06:11:03 5826 2

原创 Docker常用操作汇总

Docker作为新兴的虚拟化技术,在资源占用方面完全超越虚拟机,具有启动速度快,节省硬件资源等一些优点。但是在Linux环境下不方便进行图形化管理。所以特将一些实际操作中的命令及参数说明进行汇总。#查找镜像$docker search ubuntu#下载镜像$docker pull ubuntu#删除镜像$docker rmi ubuntu#查看本地镜像$docker images#

2016-08-21 18:18:19 685

原创 解决Ubuntu16.04 wineQQ和wps office 不能输入中文的问题

wpssudovi/usr/bin/wpssudo vi /usr/bin/wps sudo vi /usr/bin/wpp $ sudo vi /usr/bin/et 在第一行 #!/bin/bash 下添加: export XMODIFIERS=”@im=fcitx” export QT_IM_MODULE=”fcitx”2.wineQQ $sudi vi /usr/shar

2016-08-21 11:59:00 2761 2

原创 解决双硬盘安装Ubuntu选择启动菜单后黑屏的问题

本人笔记本电脑型号为联想V470,为SSD+HDD双硬盘。经过反复尝试,目前得出一个较为理想的解决方案,在此分享。其他机型类似。 1、以SSD作为主引导盘,在SSD上创建Ubuntu的/boot分区,并将引导安装在该boot分区。 2、安装Ubuntu后重启到Windows,使用easyBCD添加引导,选择grub2自动查找的方式。 3、设置硬盘启动顺序(黑屏即该原因导致),我的电脑将光驱设为

2016-08-15 07:57:18 4953 1

原创 TELNET “no router to host”错误问题解决

参考文章:http://blog.sina.com.cn/s/blog_9151e7300101ksui.html使用CENTOS7系统搭建了一个FTP服务器,TELNET该服务器时出现“no router to host”的错误提示,经一番搜索。找到问题是出现在防火墙没清理的问题导致的 解决办法:[sunhf@localhost ~]$ sudo iptables -F

2016-07-17 07:19:05 3055

原创 CENTOS 7 安装 XFCE 桌面

Xfce 是一个轻量级的桌面环境。Xfce 软件包不包含在核心软件源中。它被第三方软件源 Extra Packages for Enterprise Linux (EPEL) (查看:http://fedoraproject.org/wiki/EPEL)包含。要安装 Xfce 首先要安装 EPEL 软件源。1、安装 EPEL软件源:yum install epel-release 2、安装 Xfc

2016-06-23 15:53:54 2525

原创 MVN 安装 JAR包

ORACLE的JDBC JAR 包 无法从MVN仓库中下载, 需要自行安装POM配置<dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc14</artifactId> <version>10.2.0.4.0</version> </depend

2016-06-19 12:46:43 645

转载 CentOS7 yum 安装 MySQL 5.7

CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。1. 下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2. 安装mysql-community-release-el7-5.noarch.rpm包$ s

2016-01-03 13:38:49 905

原创 MyBatis使用动态SQL批量插入数据

数据对比分析时,难免要向另一张表插入分析结果,则需要插入多行数据。MySQL支持的一种插入多行数据的INSERT语句写法是INSERT INTO 表名 (字段名1,字段名2,字段名3) VALUES (值1,值2,值3,...),(值1,值2,值3,...)... 在MyBatis中可以用动态SQL的方式实现。 MySQL写法:<insert id="batchSave" parameterTy

2015-12-19 13:43:39 10827 6

原创 2015年11月 面试题总结

hibernate一级缓存和二级缓存的区别答:主要的不同是它们的作用范围不同。 一级缓存是session级别的。 也就是只有在同一个session里缓存才起作用。而二级缓存是sessionFactory级别的。 其缓存对同一个sessionFactory生产出来的session都有效。 spring中AOP实现日志的方法答:这种方式实现起来非常简单,只要配置一下配置

2015-10-15 07:37:44 1416

原创 Ubuntu 15.04 Intel/Nvidia双显卡笔记本电脑 FN屏幕亮度调整 针对性解决方案

针对笔记本电脑在Ubuntu下FN不能调节亮度针对性处理方法,网上很多只有更改grub然后草草了事,但这样对于双显卡的笔记本电脑来说并不会起效果。以下是本人经过多次测试已经比较稳定成功率较高的方法,分享给大家,希望能帮助到有相同困惑的朋友们!计算机硬件:笔记本型号->联想V470显卡->Intel/Nvidia双显卡第一步:附加组件中安装Nvidia显卡驱动第二步:

2015-10-10 21:08:36 5473

原创 Java程序员常犯的10个错误

网上找到的常见错误总结,感觉不错,收藏备用1. 把Array转化成ArrayList把Array转化成ArrayList,程序员经常用以下方法:List list = Arrays.asList(arr);Arrays.asList() 实际上返回一个ArrayList,但是这个ArrayList是Arrays的一个内部私有类,而不是java.util.ArrayList类。这个私有类java.ut

2015-10-06 07:01:37 2081 1

原创 Ubuntu扁平主题

PPA已有      两款扁平图标主题第一款sudo apt-add-repository ppa:numix/ppa sudo apt-get update sudo apt-get install numix-icon-theme-circle //安装图标sudo apt-get install numix-gtk-theme          //安装主题第

2015-10-05 21:38:28 1366

原创 struts2 spring4 图片上传

简介:这是一个用Struts实现的图片上传,既然用了struts 就难免跟着用spring,发一个相对完整的单文件上传案例.依赖:Spring IoC相关jar包:IoC: commons-logging.jar spring-beans-*.RELEASE.jar spring-context-*.RELEASE.jar spring-core-*.RELEASE

2015-09-25 15:32:59 5827 2

原创 SpringMVC 的环境配置

springMVC: MVC:是一个非常优秀的设计思想,将程序组件按照功能分成模型(M)视图(V)控制器(C) Model:处理业务,逻辑+数据 javabean dao View: 显示或接收数据 jsp Control: 接收请求分发给模型处理,然后根据处理结果调用视图响应. servletSpringWebMVC:根据MVC思想编写的一套框架jsp+

2015-09-23 21:46:38 4027

原创 Spring IoC 详解(下篇)

IoC 构造器注入<!-- 声明TelePhone --><bean id="phone" class="model.TelePhone"> <!-- index指定构造器的第几个参数,name指定参数名,value指定参数值 --> <constructor-arg name="cpu" index="0" value="高通"></constructor-arg> <c

2015-09-22 20:08:28 1890

原创 JSP文件上传

概述: 文件上传是网站中很常用的一个功能,下面是一个文件上传的基本demo。 由于是使用的新版jar包,所以需要依赖以下几个jar包: catalina.jar commons-fileupload-1.3.1.jar commons-io-2.4.jarpublic class UploadServlet extends HttpServlet {

2015-09-22 06:39:06 7548 2

原创 Spring IoC 详解(上篇)

介绍: Spring 主要思想IoC(控制反转) 是Core的核心部分,AOP(面向切面编程),其中IoC由DI(依赖注入)的思想实现,AOP是OOP(面向对象)的一种延伸,Spring可以降低程序组建之间的耦合度。Spring 提供了Spring MVC(spring web mvc) 的实现,可以快速开发MVC结构的Web程序Spring核心jar包: IoC: c

2015-09-21 21:12:19 2626

原创 Java RandomAccessFile文件操作详解

简介: RandomAccessFile类可以对文件随机访问的操作,访问包括读和写操作。该类的读写是基于指针的操作。 RandomAccessFile对文件进行随机访问操作时有两个模式,一种是只读(r),另一种是读写(rw),需在创建RandomAccessFile对象时传入一个参数进行设置,第一个参数代表要访问的文件,第二个参数代表设置访问模式 RandomAccessFile(File f

2015-07-31 06:38:57 8394

原创 Java HashMap LinkedHashMap 区别及原理

HashMap原理 HashMap是Map的一个常用的子类实现。其实使用散列算法实现的。 HashMap内部维护着一个散列数组(就是一个存放元素的数组),我们称其为散列桶,而当我们向HashMap中存入一组键值对时,HashMap首先获取key这个对象的hashcode()方法的返回值,然后使用该值进行一个散列算法,得出一个数字,这个数字就是这组键值对要存入散列数组中的下标位置。 那么得知了下

2015-07-25 22:26:02 10441

原创 Java 中 Map 的使用

Map接口提供了一组可以以键-值对(key,value)形式存储的数据结构。 Map对存入元素只有一个要求,就是键(key)不能重复,Map对于key,value要求不是很严格,key只要是引用类型即可。通常情况下,使用String和Integer比较多。Map提供了一个方法用来存入数据: V put(K k,V v) 该方法的作用是将key-value对存入Map中,因为Map中不允许出现重

2015-07-25 19:53:25 2072

原创 Java中的queue和deque

队列(queue)是一种常用的数据结构,可以将队列看做是一种特殊的线性表,该结构遵循的先进先出原则。Java中,LinkedList实现了Queue接口,因为LinkedList进行插入、删除操作效率较高 相关常用方法: boolean offer(E e):将元素追加到队列末尾,若添加成功则返回true。 E poll():从队首删除并返回该元素。 E peek():返回队首元素,但是不删

2015-07-25 07:09:07 38424 4

原创 Java List详解

List接口是Collection的子接口,用于定义线性表结构,其中ArrayList可以理解为一个动态数组,而LinkedList可以理解为一个链表常用操作: 插入和删除操作: void add(int index,E element): 将给定的元素插入到指定位置,原位置及后续元素都顺序向后移动。 E remove(int index): 删除给定位置的元素,并将被删除的元素返回。ge

2015-07-24 23:32:55 8688

阿里巴巴Java开发规范1.2.0

阿里精髓,不解释,很好用,多多学习。

2017-06-09

Google JavaScript 编码规范

Google JavaScript编码规范,提升代码质量神器。

2017-06-09

Java类热替换(热部署)源码

Java 自定义ClassLoader 实现类的热替换核心代码

2017-05-25

Nio非阻塞socket通信demo

本人写的Nio非阻塞socket通信demo,内有注释。

2017-05-10

osworkflow2.8 官方jar包

osworkflow原版jar包,包含gui设计工具等。

2017-04-14

sonarrunner 2.x 全版本

sonar-scanner sonar-runner 几个经典版本打包,适合不同版本jdk下配合sonarqube对非maven项目进行代码质量审查。

2017-03-19

sonarqube 4.5.x 常用Java插件包及汉化包

包含Java常用插件包及汉化包等,兼容4.5.x版本,旧版本资源不好找。特此收藏并分享给大家

2017-03-19

staruml2.7破解补丁

该补丁为全平台版本,亲测可用,如有问题请留言及时回复。

2016-10-09

OSWorkflow中文手册 2.8

osworkflow 中文文档,内容详尽。

2016-09-28

PDM阅读器JAVA版

PDM查看器,安装java后 使用 java -jar运行即可

2016-09-07

《OSWorkflow开发指南》电子版.pdf

2016-07-13

PLSQL Developer 11 绿色版(自带连接客户端)

解压后根据说明修改配置文件即可直接连接,包含数据库连接驱动,方便快捷

2016-07-07

osworkflow2.7 API

官网已绝版的API文档,该文档为OSWORKFLOW 的2.7 版本API

2016-07-06

Oracle 12c 官方安装手册.pdf

官方推出的oracle12c 安装手册,很实用

2016-04-14

软件工程复习资料

在网上找到的,很全的软件工程复习笔记,特此分享,希望能帮助到大家

2015-05-06

空空如也

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

TA关注的人

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