
规范
文章平均质量分 56
淘气的高老板
污,孤傲,高冷,薄情,悲天悯人的高老板
展开
-
在linux和Windows使用curl,使用POST提交JSON数据
在linux&需要用\&转义GET:curl http://119.29.151.177/account/password/find?channel=2201\&account=abcPOST:curl -X POST http://demo.wiliamy.com/account/password/find?channel=2201\&account=abc在windos power she原创 2017-05-08 15:33:09 · 8265 阅读 · 2 评论 -
设计模式六大原则(5):开放封闭原则(OCP)
什么是开闭原则? 定义:是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。 开闭原则主要体现在两个方面: 1、对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。2、对修改封闭,意味着类一旦设计完成,就可以独立其工作,而不要对类尽任何修改。怎么使用开闭原则? 实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固转载 2017-06-01 17:17:36 · 425 阅读 · 0 评论 -
JAVA 8 并发增强 (2)乐观读
/* * J8添加了StampedLock类,它用来实现乐观读。 首先调用tryOptimisticRead方法,此时会获得一个“印戳”。然后读取值并检查“印戳” * 是否仍然有效(例如其他线程已经获得了一个读锁)。如果有效,就可以使用这个值。如果无效,就会获得一个读锁(它会阻塞所有的写锁) */public class Vector { private int size; priva原创 2016-08-09 14:50:52 · 845 阅读 · 0 评论 -
javaAPI深入理解(2)Collection,List的设计,ListIterator与Iterator,RandomAccess,List排序、逆序以及其他
我们看一下RandomAccess接口的声明 之前我们知道List通过Collection继承了Iterable接口 public interface Collection extends Iterable public interface List extends Collection 1 Iterator模式为Collection提供了遍历和删除我们看一下Iterable的方法列表publ原创 2017-05-09 15:10:34 · 1123 阅读 · 0 评论 -
Comparable和Comparator的区别和联系
1 两个接口的定义public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj);//object的}public interface Comparable<T> { public int compareTo(T o);}2 区别<T extends Compara原创 2017-05-17 18:36:53 · 513 阅读 · 0 评论 -
maven:Fatal error compiling: 无效的目标 发行版: 1.8 -> [Help 1]
使用mvn clean install命令的时候出现如下的错误:[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project demo-core-common: Fatal error compiling: 无效的目标 发行版原创 2017-05-27 01:29:08 · 15850 阅读 · 0 评论 -
javaAPI深入理解(1)如何截短一个List以及List.subList()方法的坑
removeRange(int, int);这个方法AbstractList并没有暴露出来,我们应该如何得到一个截短的list?1 如何得到一个list某个范围的子集sublist首先想到sublist(int, int)方法 注意此方法参数左闭右开。 测试如下1.1 修改sublist会影响原来的list LinkedList<String> ll = new LinkedList<>(原创 2017-05-04 13:41:44 · 41032 阅读 · 3 评论 -
java1.8几个漂亮的API设计(2)排序和比较
比较types.sort(Comparator.comparing(ArticleType::getCreate_time)); public static <T, U extends Comparable<? super U>> Comparator<T> comparing( Function<? super T, ? extends U> keyExtrac原创 2017-03-17 16:36:56 · 1715 阅读 · 0 评论 -
设计模式(1)Iterator模式
设计模式(1)Iterator模式编辑文章 Iterator是java集合框架的成员,使用了设计模式中的Iterator模式我们从API中将这种方式提炼出来,并且了解List的设计Iterator核心设计1 定义接口Iteratorpublic interface Iterator<E> { boolean hasNext(); E next();}Iterable 用来给原创 2017-03-31 11:19:26 · 459 阅读 · 0 评论 -
spring boot(8) 配置外部tomcat(2) dependencyManagement的方式
①修改POMwar1.3.5.RELEASEUTF-81.8org.springframework.bootspring-boot-dependencies${spring-boot.version}pomimport②修改启动类,继承SpringBootServletInitializerpublic class原创 2016-07-29 17:24:47 · 2059 阅读 · 0 评论 -
tomcat7, tomcat8的进入manager, tomcat_user.xm配,以及如何配置远程访问manager
要使用,localhost:8080/manager 需要配置tomcat_user.xml以下注释打开后依然不可以 " roles="tomcat"/> " roles="tomcat,role1"/> " roles="role1"/>-->修改成以下重启即可原创 2016-07-30 10:09:19 · 17513 阅读 · 4 评论 -
maven tomcat8 远程部署(支持tomcat7)
①修改tomcat的conf文件夹下的tomcat_user.xml ②启动tomcat③修改pom.xml的org.apache.maven.pluginsmaven-compiler-plugin3.5.1org.apache.tomcat.maventomcat7-maven-plugin2.2原创 2016-07-31 10:11:25 · 6853 阅读 · 0 评论 -
Exception
我们先自定义个运行时异常package redis.clients.jedis.exceptions;public class JedisException extends RuntimeException { private static final long serialVersionUID = -2946266495682282677L; public JedisException(St原创 2017-07-12 22:12:50 · 364 阅读 · 0 评论 -
Java 文件与字节流(InputStream.available()在本地文件和网络文件的异同)
1 文件到字节流1.1 IOIO:输入流,直接写完close即可InputStream in = new FileInputStream(fileName); DataInputStream stream = new DataInputStream(in); IO:输出流,直接读完close即可,即使FileOutputStream(String name, boolean append)可以有原创 2017-07-20 14:39:04 · 1810 阅读 · 0 评论 -
幂表
2的幂 准确值(X) 近似值 X字节转换成MB,GB等 7 128 8 256 10 1024 一千 1K 16 65536 64K 20 1048576 一百万 1MB 30 1073 741 824 十亿 1GB 32 4294 967 296 4GB 40原创 2017-08-11 20:27:55 · 421 阅读 · 0 评论 -
远程调用rpc的时候 远程的异常如何处理
远程调用rpc的时候 远程的异常如何处理?返回 错误码+错误描述 这个和RPC协议定义有关系了,一般RPC协议会有错误码的,比如0是正常,其他是错误码,并且附带errMsg 如果 远程rpc是层层调用的,就层层返回,可以加入分布式 追踪系统RPC timeout原创 2017-07-17 00:03:50 · 10422 阅读 · 1 评论 -
Java 并发与多线程规范(3)happen before和volatile总结,ArrayList和CopyOnyWriteList的区别
volatile的语义volatile 的语义是memory barrier可以参考一下Java 内存模型。线程在启动后,读取内存Heap 值复制到自己的工作缓存,比如寄存器、N级缓存等。寄存器、N级缓存在CPU,如果需要其他线程感知的话,需要同步是主存中,如果其他线程看到变量是volatile的话,回去主存加载。Heap 就存放在主存中,也就是内存中。volatile 实际上是强制线程去主存中读取原创 2017-07-19 11:42:53 · 728 阅读 · 0 评论 -
Java 多线程规范(2)线程池详解
十四,线程池详解线程池示例public class ThreadPoolTool { public static final ThreadPoolExecutor THREAD_POOL_EXECUTOR = new ThreadPoolExecutor( 0, Integer.MAX_VALUE, 60L,原创 2017-07-18 21:51:05 · 1009 阅读 · 0 评论 -
在linux下配置tomcat的虚拟路径
我喜欢将war文件放在tomcat下的webapps路径下然后,配置成自动部署和虚拟路径虚拟路径在linux下的例子 appBase="webapps" unpackWARs="true" autoDeploy="true"> xianjian"/> prefix="access." suf原创 2016-01-16 09:31:21 · 6711 阅读 · 0 评论 -
java8常用的函数,以及lamda表达式有非运行异常能否在外部捕获
Stream API中经常使用的函数式接口 函数式接口 参数类型 返回类型 描述 Supplier<T> 无 T 提供一个T类型的值 Consumer<T> T void 处理一个T类型的值 BiConsumer<T,U> T, U void 处理T类型和U类型的值 Predicate<T> T boolean 一个计算B原创 2017-07-12 23:57:01 · 1340 阅读 · 0 评论 -
框架基础(1)使用LinkedHashMap实现LRU缓存
public class LRUCache extends LinkedHashMap { private static final long serialVersionUID = 3755413498196039249L; private static final float DEFAULT_LOAD_FACTOR = 0.75f; private static final int原创 2017-03-10 14:26:10 · 550 阅读 · 0 评论 -
java基础,单例总结
三,记录式单例/** * 记录式单例 */public class SingleTon3 { private static Map map = new HashMap(); static { SingleTon3 single = new SingleTon3(); map.put(single.getClass().getName(), single); } priv原创 2015-09-06 10:57:13 · 555 阅读 · 0 评论 -
JVM参数,启动jar 包以及 启动tomcat的 JVM参数设置
启动示例public class TestJVM { public static void main(String[] args) { long maxM = Runtime.getRuntime().maxMemory(); long totalM = Runtime.getRuntime().totalMemory(); long usedM = Runtime原创 2016-07-27 15:35:33 · 16398 阅读 · 0 评论 -
关注程序性能(1)jconsole 连接远程linux上的tomcat,以及解决配置后tomcat关闭不了的问题
一,修改catalina.sh参数如下修改catlina.shvim catalina.sh#JAVA_OPTS="$JAVA_OPTS $JSSE_OPTS"CATALINA_OPTS=-Djava.awt.headless=trueJAVA_OPTS="$JAVA_OPTS $JSSE_OPTS -Dcom.sun.management.jmxremote.port=8989 -D原创 2016-08-08 14:42:05 · 2349 阅读 · 0 评论 -
tomcat 解决 POST请求传参数过长受限制的问题
问题描述:公司某个后台修改文章发表的时候,比如文章标题title,文章内容content,当文章内容过大的时候,连title传过来的参数也成null了。问题分析:POST请求本身并未限制传入参数大小,是tomcat 容器设置了接收参数大小的限制解决过程:vim server.xml<Connector port="8080" protocol="HTTP/1.1" co原创 2016-08-01 18:33:18 · 28211 阅读 · 11 评论 -
判断是不是同一天,同一周
public static boolean sameDay(Date d0,Date d2){ if(null == d0 || null == d2){ return false ; } Calendar c0 = Calendar.getInstance(); Calendar c2 = Calendar.getInstance(); c0.setTime(d0);原创 2014-04-29 18:47:37 · 1500 阅读 · 0 评论 -
Nginx(2) 启动,停止,信号控制
一,启动,停止,检查配置文件和重启启动 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf停止kill -QUIT pid 温和停止kill -TERM pid 快速停止kill -INT pid 快速停止强制停止pkill -9 nginx验证配置文件是否没错原创 2016-08-05 11:43:29 · 772 阅读 · 0 评论 -
Nginx(3) NGINX + TOMCAT +JAVA 做负载均衡集群
一,配置多个tomcat,为了简便起见,我配置了两个tomcat,他们的server.xml如下配置apache-tomcat-8.5.4 <Connector port="8084" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />原创 2016-08-05 16:29:15 · 719 阅读 · 0 评论 -
tomcat 自定义JDK路径 setclasspath.sh 和setclasspath.bat
vim setclasspath.shexport JAVA_HOME=/usr/local/services/jdk1.8.0_91export JRE_HOME=/usr/local/services/jdk1.8.0_91/jre原创 2016-08-01 13:58:41 · 16768 阅读 · 3 评论 -
关注程序性能(1)jconsole
一,对jdk1.8.0_91/jre/lib/management下面的jmxremote.password.template改名为jmxremote.password 文件,打开注释如下monitorRole QEDcontrolRole R&D修改此文件为只读,chmod 0400 jmxremote.password二,启动java程序 XXX原创 2016-07-27 15:59:35 · 367 阅读 · 0 评论 -
Android多线程问题。android.os.NetworkOnMainThreadException
主线程不能进行访问网络等耗时操作原创 2015-12-24 16:30:23 · 512 阅读 · 0 评论 -
JAVA 8 并发增强 (3)ConcurrentHashMap改进
/** * ConcurrentHashMap是线性安全的,多个线程不需要对内部结构造成破坏,就可以删除或者添加元素。 * 性能高,允许多个线程并发更新哈希表的不停部分,而不会造成相互堵塞 * ConcurrentHashMap的size是int类型,J8为了应付数量巨大的并发哈希映射,引入了一个mappingCount方法 * 用来返回一个反应大小的long型值 tips:哈希映射将会将原创 2016-08-09 15:43:10 · 3873 阅读 · 0 评论 -
JAVA 8 并发增强 (4) ConcurrentHashMap批量操作
/* * java8为并发哈希映射提供了批量操作数据操作,即使在其他线程同时操作映射时也可以安全的执行。 * 批量数据操作会遍历映射并对匹配的元素进行操作。在批量操作过程中,不需要冻结映射的一个快照。除非你恰好知道在这段时间 * 内映射没有被修改,否则你应该将结果看作是映射状态的一个近似值。批量操作有三类 * a,search会对每个键或值应用一个函数,直到函数返回一个nu原创 2016-08-09 17:10:30 · 3248 阅读 · 0 评论 -
Oauth2.0协议
oath2.0协议接触过微信豆瓣等第三方登录方式,现在整理下oath2.0协议参考文档:点击打开链接微信服务号的获取资源方式:微信服务号/* step1 */String response_type = "code";path = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={}&redirect原创 2017-02-12 16:48:46 · 1206 阅读 · 0 评论 -
REDIS(11) redis做分页
之前的数据都加载到了本地java的Map,分页如下@RequestMapping("/articles") String articles(Model model, HttpServletRequest req, HttpServletResponse rsp, @RequestParam Optional type_id, @RequestParam Optional page_no) {原创 2017-02-09 15:51:44 · 2913 阅读 · 2 评论 -
分布式事务的特性CAP 关系数据库事务的特性ACID 非关系数据库的特性BASE
在数据库系统中,一个事务是指:由一系列数据库操作组成的一个完整的逻辑过程。例如银行转帐,从原账户扣除金额,以及向目标账户添加金额,这两个数据库操作的总和,构成一个完整的逻辑过程,不可拆分。这个过程被称为一个事务,具有ACID特性 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)原创 2011-11-14 02:55:15 · 1382 阅读 · 0 评论 -
Spring boot(9) 的异常,以及异常页面的处理
一,如果发生错误,返回的页面内容如下Whitelabel Error PageThis application has no explicit mapping for /error, so you are seeing this as a fallback.Thu Aug 04 16:02:48 CST 2016There was an unexpected error原创 2016-08-04 17:48:32 · 31355 阅读 · 2 评论 -
spring boot(7) 配置外部tomcat(1)
一,POM配置为打成war包war二,打包去掉内嵌tomcatorg.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-tomcatorg.springframework.bootspring-boo原创 2016-07-29 09:57:07 · 3394 阅读 · 0 评论 -
(设计模式1)设计模式5大原则:SOLID原则
SOLID是几个重要编码原则的缩写SRP: The Single Responsibility Principle单一责任原则OCP: The Open Closed Principle开放封闭原则LSP: The Liskov Substitution Principle 里氏替换原则LD: The law of Demeter迪米特法则ISP: The In原创 2016-10-26 17:17:20 · 4784 阅读 · 4 评论 -
nginx + tomcat ,session共享的问题
目前nginx.conf的部分配置如下访问接口,几次访问后发现, 如果连续nginx导向同一个tomcat则sessionId是同一个,但是如果中途导向其他的tomcat,即使再导向之前的tomcat,sessionId也已经发生变化了,session判断的机制是,在客户端的cookie存一个jsessionid,当浏览器访问的时候,会从cookie中判断是否是同一用户,如原创 2016-08-12 14:32:44 · 1803 阅读 · 0 评论