java
_yuki_
一路打怪升级,直至见到大魔王
展开
-
mac 配置jdk1.8(小白教程)
1.Mac下默认得Java安装路径/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java (通过Mac系统默认安装的JDK1.6),如果通过Oracle官网下载得安装路径是:/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Ho原创 2017-02-21 23:41:35 · 28887 阅读 · 0 评论 -
mac 配置tomcat
第一步:下载Tomcat (以tomcat8为例)下载地址:http://tomcat.apache.org/download-80.cgi 直接下载如图选中的即可 第二步: 下载完成后,解压,随意放入目录。如我就把它放在/Users/fuhua/Documents/Tomcat/目录下。右键你的mac的Finder->前往文件夹->/Users/fuhua/Do原创 2017-02-22 01:09:47 · 1384 阅读 · 0 评论 -
mac 标题栏显示完整路径
当我们使用Finder浏览文件的时候,当前目录的名字会显示在标题栏顶端的中央。不过美中不足的是,在显示目录名称的时候,并没有显示出文件夹的完整路径,这样我们就很难知道当前目录的准确位置。打开这个图标:Shell代码:defaults write com.apple.finder _FXShowPosixPathInTitle -bool YESkillall Finder原创 2017-02-21 23:57:32 · 3564 阅读 · 1 评论 -
mac 安装STS或eclipse 问题
官方网站:地址安装完毕打开 可能会出现一下状况(没问题可以跳过):Version 1.6.0_65 of the JVM is not suitable for this product有2种解决方法第1种: 到官方(地址),安装多一个jdk版本即可 第2种:(不想安装只需改一下配置即可,这里我是jdk1.8)原创 2017-02-22 00:22:37 · 5306 阅读 · 0 评论 -
maven 项目发布到tomcat后没有lib文件夹解决办法
我们在做web开发是,经常都要在eclipse中搭建web服务器,并将开发中的web项目部署到web服务器进行调试,在此,我选择的是tomcat服务器。之前部署web项目到tomcat进行启动调试都很正常,今天突然出现无法启动情况,启动过程报如下错误:Java.lang.ClassNotFoundException: org.springframework.web.context.Cont原创 2017-02-22 00:30:22 · 786 阅读 · 0 评论 -
应对表扩展的一列
需求缘起产品第一版:用户有用户名、密码、昵称等三个属性,对应表设计:user(uid, name, passwd, nick)第二版,产品经理增加了年龄,性别两个属性,表结构可能要变成:user(uid, name, passwd, nick, age, sex)假设数据量和并发量比较大,怎么变?(1)alter table add column?不太可行,锁表时间原创 2017-03-01 10:57:13 · 449 阅读 · 2 评论 -
一分钟掌握数据库垂直拆分
一、缘起当数据库的数据量非常大时,水平切分和垂直拆分是两种常见的降低数据库大小,提升性能的方法。假设有用户表:user(uid bigint,name varchar(16),pass varchar(16),age int,sex tinyint,flag tinyint,sign varchar(64),intro varchar(256)…);转载 2017-03-01 10:49:23 · 310 阅读 · 0 评论 -
跨库分页 的四种方案
(ps:以mysql举个例)一、需求缘起分页需求互联网很多业务都有分页拉取数据的需求,例如:(1)微信消息过多时,拉取第N页消息(2)京东下单过多时,拉取第N页订单(3)浏览58同城,查看第N页帖子这些业务场景对应的消息表,订单表,帖子表分页拉取需求有这样一些特点:(1)有一个业务主键id, 例如msg_id,order_id,tiezi_id(2)分页排序转载 2017-03-01 10:37:09 · 787 阅读 · 0 评论 -
Plupload实现断点续传(Spring+SpringMVC+MyBatis+Plupload)
关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了。Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务器上传,这是它能驾驭上传大文件的原因之一,而且在这个过程可以暂停上传,暂停后再继续上传。最重要的是,从头到尾没有一点点UI阻塞,保证了用户体验。下面会开始讲Plupload的实现流程,分析原理,并在最转载 2016-08-23 09:47:09 · 6830 阅读 · 7 评论 -
mac 下配置Maven环境
1.download maven (地址)选择binary的 .tar.gz 或者 .zip 文件2.解压并移动到自定义目录,我将其移动到Documents(文稿)目录下 ps(个人习惯)3.配置环境Shell代码vim .bash_profile 添加一下内容:export M2_HOME=/原创 2017-02-22 00:52:46 · 356 阅读 · 0 评论 -
java excel导出
用的是 poi的包:package com.gzkit.util.ExcelUtil;import java.io.IOException;import java.io.OutputStream;import java.lang.reflect.Method;import java.text.SimpleDateFormat;import java.util.Collect原创 2017-03-21 10:06:48 · 441 阅读 · 0 评论 -
java 文字生成图片
直接上代码:import java.awt.*; import java.awt.image.*; import java.awt.font.*; import java.awt.geom.*; import java.io.File;import java.io.IOException;import java.io.OutputStream;import java.原创 2017-04-07 16:15:22 · 12123 阅读 · 3 评论 -
Redis GEO地理使用(六)
类似效果实现算法:地址GEO 详细介绍:地址geoadd:增加某个地理位置的坐标。GEOADD key longitude latitude member [longitude latitude member ...]将给定的空间元素(纬度、经度、名字)添加到指定的键里面。 这些数据会以有序集合的形式被储存在键里面, 从而使得像 GEOR原创 2017-06-26 14:39:18 · 2415 阅读 · 2 评论 -
java 获取中文拼音首字母(缩写)
直接上代码:import java.io.UnsupportedEncodingException;/** * * @author yuki_ho * */public class ChineseCharToEnUtil { private final static int[] li_SecPosValue = { 1601, 1637, 1833, 2078, 227原创 2017-07-25 10:31:14 · 21905 阅读 · 2 评论 -
java中常见jar包的作用
jar包 用途:axis.jar SOAP引擎包 commons-discovery-0.2.jar 用来发现、查找和实现可插入式接口,提供一些一般类实例化、单件的生命周期管理的常用方法. jaxrpc.jar Axis运行所需要的组件包 saaj.jar 创建到端点的点到点连接的方法、创建并处理SOAP消息和附件的方法,以及接收和处理SOAP错误的方法. wsdl4j-1转载 2017-07-21 14:32:41 · 590 阅读 · 0 评论 -
RocketMQ 4.1.0 与 Docker搭建与集群
搭建环境:dockerCentos7RocketMQ 4.1.0java 1.8 ps:如果你没 RocketMQ.tar.gz 请在 搭建里 (补充 git 和 maven )git clone https://github.com/apache/incubator-rocketmq.git mvn clean package install -Prelease-al原创 2017-05-25 17:13:27 · 7831 阅读 · 0 评论 -
Redis 主从复制、读写分离、高可用(七)-part 3
这里我用docker实现:结构:[root@14ba6e5d00c2 redis]# lsredis-3.2.8 redis-6379 redis-6380 redis-6381配置文件和前面改动一样,config 要注意的是:#bind 127.0.0.1bind 0.0.0.06379的配置: 改红的是需要注意的# Redis configuratio原创 2017-06-26 16:29:49 · 866 阅读 · 0 评论 -
Redis cluster(八)-part 1
一:关于redis cluster1:redis cluster的现状目前redis支持的cluster特性1):节点自动发现2):slave->master 选举,集群容错3):Hot resharding:在线分片4):进群管理:cluster xxx5):基于配置(nodes-port.conf)的集群管理6):ASK 转向原创 2017-07-12 16:41:57 · 407 阅读 · 0 评论 -
Spring4 实战笔记(4):基于Spring构建Web应用
request的处理过程用户每次点击浏览器界面的一个按钮,都发出一个web请求(request)。一个web请求的工作就像一个快递员,负责将信息从一个地方运送到另一个地方。从web请求离开浏览器(1)到返回响应,中间经历了几个节点,在每个节点都进行一些操作用于交换信息。下图展示了Spring MVC应用中web请求会遇到的几个节点。web请求经过几个节点处理然后产生响应信息原创 2016-12-23 00:29:26 · 1306 阅读 · 0 评论 -
java 二维码 生成和解析 (中间:图片、文字;底部:文字)
一、准备工作下载QR二维码包。首先得下载zxing.jar 包, 我这里用的是3.3版本的core包下载地址:现在已经迁移到了github:https://github.com/zxing/zxing/wiki/Getting-Started-Developing,当然你也可以从maven仓库下载jar包:http://central.maven.org/maven2/com/原创 2017-04-07 16:15:51 · 8719 阅读 · 10 评论 -
Tomcat中JVM内存溢出及合理配置
Tomcat本身不能直接在计算机上运行,需要依赖于硬件基础之上的操作系统和一个Java虚拟机。Tomcat的内存溢出本质就是JVM内存溢出,所以在本文开始时,应该先对Java JVM有关内存方面的知识进行详细介绍。一、Java JVM内存介绍 JVM管理两种类型的内存,堆和非堆。按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 J转载 2017-05-31 12:14:11 · 1247 阅读 · 0 评论 -
Thymeleaf3+Springmvc4 简易配置
依赖: org.thymeleaf thymeleaf-spring4 3.0.0.RELEASEThymeleaf3 之前:@Beanpublic TemplateResolver templateResolver() { TemplateResolver resolver = new ServletContextTemplateResolv原创 2016-12-26 15:08:22 · 5359 阅读 · 0 评论 -
Spring 防御CSRF、XSS和SQL注入攻击
对每个post请求的参数过滤一些关键字,替换成安全的,例如: ' " \ / # & 方法是实现一个自定义的HttpServletRequestWrapper,然后在Filter里面调用它,替换掉getParameter函数即可。首先添加一个XssHttpServletRequestWrapper:package com.ibm.web.beans;import java.u原创 2016-12-15 16:12:02 · 2151 阅读 · 0 评论 -
Spring 服务启动 自动执行(ApplicationListener)
适合Spring 容器 启动后 初始化 数据原创 2016-12-08 14:52:11 · 4026 阅读 · 0 评论 -
使用SortedMap对HashMap排序
//SortedMap 所有参与传参的参数按照accsii排序(升序) HashMap map=new HashMap(); map.put("1","11"); map.put("2", "22"); map.put("3", "33"); for (Entry原创 2016-08-24 16:21:07 · 2081 阅读 · 0 评论 -
MD5帮助类
import java.security.MessageDigest;public class MD5Util { /** * 转换字节数组为16进制字串 * @param b 字节数组 * @return 16进制字串 */ public static String byteArrayToHexString(byte b[]) {原创 2016-08-24 10:03:21 · 497 阅读 · 0 评论 -
反射
一 反射(类的加载概述和加载时机)A:类的加载概述当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。加载 就是指将class文件读入内存,并为之创建一个Class对象。任何类被使用时系统都会建立一个Class对象。连接验证 是否有正确的内部结构,并和其他类协调一致准备 负责为类的静态成员分配内存转载 2016-08-23 09:55:21 · 220 阅读 · 0 评论 -
https请求 帮助类
枚举:public enum EnumMethod { GET,POST;}https帮助类(未抽公共): 有返回json / 有返回 byte[ ] import java.io.BufferedReader;import java.io.ByteArrayOutputStream;import java.io.FileOutputStream;impor原创 2016-08-08 11:16:48 · 692 阅读 · 0 评论 -
JAVA 并发编程-线程创建(二)
对于线程的创建及更加详细的信息可以参看博客《Java--线程》,下面是对线程创建的细化及简单再实现。在java中如果要创建线程的话,一般有两种方式:1)继承Thread类;2)实现Runnable接口。 方式一:继承Thread类 MyThread:[java] view plain copy print?package com.tg转载 2016-08-05 16:52:37 · 248 阅读 · 0 评论 -
JAVA 并发编程-线程与进程的由来(一)
一.操作系统中为什么会出现进程?说起进程的由来,我们需要从操作系统的发展历史谈起。最初计算机: 也许在今天,我们无法想象在很多年以前计算机是什么样子。我们现在可以用计算机来做很多事情:办公、娱乐、上网,但是在计算机刚出现的时候,是为了解决数学计算的问题,因为很多大量的计算通过人力去完成是很耗时间和人力成本的。 在最初的时候,计算机只能接受一些特定的指令,转载 2016-08-05 16:46:26 · 270 阅读 · 0 评论 -
JAVA 并发编程-多个线程之间共享数据(六)
多线程共享数据的方式: 1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据,例如,卖票系统就可以这么做。2,如果每个线程执行的代码不同,这时候需要用不同的Runnable对象,例如,设计4个线程。其中两个线程每次对j增加1,另外两个线程对j每次减1,银行存取款 有两种方法来解决此类问题:将共享数据封装成另外一个对象,转载 2016-08-16 11:27:56 · 340 阅读 · 0 评论 -
JAVA 并发编程-传统线程互斥技术(Synchronized)(三)
Java线程互斥是为了保证,同一时刻最多只有一个线程执行该段代码。那么它的出现又是为了解决什么问题呢?账户存取款,在同一时间段只能让一个人进行操作。 下面来看一个简单实例(多线程带来的问题):[java] view plain copy print?public class TraditionalThreadSynchronized {转载 2016-08-11 14:30:09 · 275 阅读 · 0 评论 -
JAVA 并发编程-传统线程同步通信技术(四)
首先介绍几个概念: 这些方法都是Object的方法,并不是线程的方法!wait()方法 wait()方法使得当前线程必须要等待,等到另外一个线程调用notify()或者notifyAll()方法。 当前的线程必须拥有当前对象的monitor,也即lock,就是锁。 线程调用wait()方法,释放它对锁的拥有权,然后等待另外的线程来通知它(通知的方式是转载 2016-08-16 09:59:49 · 313 阅读 · 0 评论 -
JAVA 并发编程-线程池(七)
线程池的作用: 线程池作用就是限制系统中执行线程的数量。 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果;少了浪费了系统资源,多了造成系统拥挤效率不高。用线程池控制线程数量,其他线程排队等候。一个任务执行完毕,再从队列的中取最前面的任务开始执行。 为什么要用线程池: 1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任原创 2016-08-25 17:02:30 · 276 阅读 · 0 评论 -
JAVA 并发编程-基于线程池设计的ScheduledExecutor(八)
上篇博客《Java并发编程-线程池(七)》中曾介绍到newScheduledThreadPool(intcorePoolSize),创建corePoolSize大小的线程池。此线程池支持定时以及周期性执行任务的需求。 接下来我们一起来分析一下Java中几种任务调度实现与比较 任务调度是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。 Timer转载 2016-08-25 17:05:38 · 342 阅读 · 0 评论 -
JAVA 并发编程-返回执行结果(Callable和Future)(九)
启动一个线程不论使用Thread或者Runnable的时候,都是没有返回结果的。也就是说Thread和Runnable的run()方法必须没有返回值。 public void run(){} 解决方案: Callable和Future,一个产生结果,一个拿到结果。 简单的来一个实例demo帮助我们理解:[java] view plain转载 2016-08-25 17:10:25 · 1017 阅读 · 0 评论 -
Spring4 实战笔记(3):面向切面编程
何为面向切面编程?切面可以用于将交叉关注点模块化。简单来说,交叉关注点值得是那些影响一个应用中多个模块的通用功能。例如,安全处理是一个交叉关注点,在应用中的很多模块中都需要应用一定的安全检查,下图展示了应用中交叉关注点与业务模块的关系。Aspects 用于模块化交叉关注点这张图展示的是一个典型的模块化应用,每个模块负责提供针对某个特定领域(domain)的服务,但是每个模块原创 2016-12-13 01:31:25 · 1584 阅读 · 0 评论 -
Spring 限制用户重复登录
监听器:import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator;import java.util.List;import java.util.Map;import javax.servlet.http.HttpSession;import javax.servlet.http.原创 2016-12-12 17:42:08 · 5930 阅读 · 3 评论 -
Spring4 实战笔记(2):装配bean的进阶知识
Environments and profiles在软件开发中,常常设置不同的运行环境:开发环境、预发环境、性能测试环境和生产环境等等。不同的环境下,应用程序的配置项也不同,例如数据库配置、远程服务地址等。以数据库配置为例子,在开发环境中你可能使用一个嵌入式的内存数据库,并将测试数据放在一个脚本文件中。例如,在一个Spring的配置类中,可能需要定义如下的bean:@Bean(dest原创 2016-12-12 02:42:58 · 988 阅读 · 0 评论 -
Spring4 实战笔记(1):装配bean—依赖注入的本质
Spring的配置方法概览正如在Spring初探一文中提到的,Spring容器负责创建应用中的bean,并通过DI维护这些bean之间的协作关系。作为开发人员,你应该负责告诉Spring容器需要创建哪些bean以及如何将各个bean装配到一起。Spring提供三种装配bean的方式:基于XML文件的显式装配基于Java文件的显式装配隐式bean发现机制和自动装配PS:尽可能原创 2016-12-12 01:04:01 · 1476 阅读 · 3 评论