
java
luwfls
这个作者很懒,什么都没留下…
展开
-
Https 配置
nginx server 下 # ssl ssl on; ssl_certificate star_sunlands_com.crt; ssl_certificate_key star_sunlands_com.key; ssl_session_timeout 5m; ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;转载 2018-05-03 20:49:09 · 1983 阅读 · 0 评论 -
字符串常量池
完整参考 java字符串池、字符串常量池详解总结:字符串存在字符串池中或堆中编译阶段会合并优化非运行时期的字符串运算String a = "a"+"b"。不同包下的不同的class中的静态域引用的字符串常量来自字符串池。(字符串常量池 只有一个 独立与方法区中的class对象,注意区分符号表、常量表)运行时确定的字符串运算会在堆中产生多个字符串对象。疑问:位于方法区还是位于堆区。Stri原创 2017-09-18 18:21:53 · 454 阅读 · 0 评论 -
Servlet 规范与工作原理的简单理解
Servlet与Servlet容器 容器就是可以接收请求,并将请求转发到servlet提供的对外服务的方法,比如tomcat 服务器 接受request请求,再调用Servlet的doGet、doPost等方法。 Servlet Servlet是受容器管理的web组件,它能动态地生成内容。Servlet是一段小程序,被编译成平台无关、架构中立的的字节码之后,可以被 Web服务器器动态地原创 2017-09-27 10:47:15 · 895 阅读 · 0 评论 -
jvm的程序计数器
线程私有的,记录当前线程下一条需要执行的字节码指令,具体对应到class文件中的方法表 被类加载器加载后,位于方法区的Class相关的某些信息。当执行 native方法时,值为 undifined。 参考 方法区 方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代原创 2017-09-18 16:00:41 · 654 阅读 · 0 评论 -
JVM内存区域-栈的理解
基本知识点栈 先进后出 LIFO的数据结构栈帧 以线程为组,一个线程可能会创建多个栈帧栈帧的构成 局部变量表 编译期间确定其大小编译期间 存储在class文件的 该方法 对应的 方法表 的 CODE属性(表)中的 MAX_LOCAL属性中。如果方法是 实例方法,则局部变量表 第一个位置存储的是 this 引用操作数栈 也是一个 LIFO的栈 编译期间确定最大深度基本操作 就是原创 2017-09-05 15:29:28 · 216 阅读 · 0 评论 -
Exception
'org.springframework.web.servlet.DispatcherServlet' is not assignable to 'javax.servlet.Servlet' 把tomcat或者weblogic包引入即可。原创 2017-07-27 11:09:44 · 342 阅读 · 0 评论 -
Integer 与二进制
Integer numberOfLeadingZeros 返回整数二进制补码中最高位(最左边)的位为1之前的零的个数bitCount 二进制码中非零位的个数。位运算 x >> n &1 取X的第n位是否为1原创 2017-07-23 14:06:31 · 1400 阅读 · 0 评论 -
LinkedList关键点分析
不必关心容量问题是一个双向链表LinkedList包含两个重要的成员:header 和 size。 header 指向头节点size 记录节点个数 private static class Node<E> { E item; Node<E> next; Node<E> prev; Node(Node<E> prev,原创 2017-08-09 11:40:57 · 206 阅读 · 0 评论 -
草稿 Stream
概念顺序遍历每一个进行操作 和 对集合的聚合操作 可以类比数据库的聚合函数 sequential and parallel aggregate operations 顶层接口BaseStream 终端操作 Iterator<T> iterator() 返回集合的迭代器Spliterator<T> spliterator() 返回集合的分割器 没搞懂怎么用,干啥用的?中间状态操作S seq原创 2017-07-24 18:37:05 · 250 阅读 · 0 评论 -
dubbo 基本概念
Dubbo 使用场景:分布式框架核心模块: 远程通讯 长连接、NIO、多种线程模型自动发现 注册中心集群容错 使用 无侵入性spring集成服务自动注册与发现架构Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次调和调用时间的监控中心。Container:转载 2017-09-28 20:20:10 · 406 阅读 · 1 评论 -
Dubbo 接口设计原则、服务系统划分
接口设计原则接口类型 简单数据查询接口:action、facade、dao带业务逻辑的数据查询接口:action、facade、biz、dao简单的数据写入接口:action、facade、dao带业务逻辑的数据写入接口:action、facade、biz、dao同步接口异步接口设计原则 接口粗粒度 一个接口代表一个完整的业务功能 减少系统间的网络交互防止业务接口数量爆炸解决转载 2017-09-29 10:49:07 · 839 阅读 · 0 评论 -
Dubbo 异常记录
服务提供者工作正常,但是消费者调用失败com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getUser in the service cn.luwfls.demo.dubbo.test.fascade.service.UserService. Tried 3 times of the providers [192.168原创 2017-09-30 11:52:27 · 1106 阅读 · 1 评论 -
关于长耗时事务之间数据不可见引起的数据重复解决办法
java的synchronized关键字是堆某对象加锁,但是我们当需要对某个字符串加锁怎么办比如对同一个订单只能有一个操作,但是对其他订单的操作不影响使用 guava包下的 Interner 类 <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</arti转载 2018-03-14 10:34:32 · 580 阅读 · 0 评论 -
kafka consumer polling timeout
Setting MAX_VALUE is sort of a synchronous message consuming, waiting forever until we got something returned back from the poll, while setting to a lower value gives you a chance that you can decide t转载 2018-03-15 13:03:54 · 2847 阅读 · 0 评论 -
覆盖hashcode方法
覆盖equals方法时,总要覆盖hashcode方法对于对象中的关键域,转换为int值,然后取其hashcode boolean 转换为 1/2byte、char、short 向上转型long -> (int)f^f>>>32float -> Float.floatToIntBits(f) double -> Double.doubleToIntBits(f)对象引用 如果equals转载 2018-01-29 13:47:38 · 828 阅读 · 0 评论 -
提高POI 读写效率
POI转载 2018-02-01 11:14:58 · 2544 阅读 · 2 评论 -
spring @Async
spring @Async原创 2018-02-01 10:58:51 · 341 阅读 · 0 评论 -
maven 脚本
org.apache.maven.plugins maven-antrun-plugin 1.7原创 2018-01-03 10:09:34 · 234 阅读 · 0 评论 -
Zookeeper Dubbo IP 白名单
zookeeper的节点概念 zookeeper入门系列:概述 总的来说 dubbo 体现在zookeeper中就是一个节点:/dubbo使用zkCli.sh 连接zookeeper/local/zookeeper-3.4.5/bin/zkCli.sh # 启动客户端connect 172.16.103.33:2181 # 连接上目标zookeeperls /原创 2017-10-13 16:12:20 · 10182 阅读 · 0 评论 -
java中的SPI机制
本文转载自 java中的SPI机制1 SPI机制简介SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下java spi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面转载 2017-10-09 15:49:12 · 248 阅读 · 0 评论 -
leetcode-7.30
Hamming Distance 整数的二进制形式 相对应的位置 bit位(0、1)不同的有几位?考察二进制位运算 Integer 与二进制public class Solution { public int hammingDistance(int x, int y) { return Integer.bitCount(x^y); }}Merge Two B原创 2017-07-30 13:46:29 · 253 阅读 · 0 评论 -
gradle + idea 构建 可运行的jar包
项目背景需要一个在远程服务器上运行的java程序,为了精简性,没有使用springboot构建,考虑构建一个可运行的jargradle使用的是 IDEA 的gradle插件配置 可运行的jar鲍插件gradle-capsule-plugin,会把依赖的第三方jar包和你的代码打入一个包中。添加nexus私服地址sourceSets 将resources包中的配置文件打入class中。指定原创 2017-07-07 09:41:34 · 2676 阅读 · 0 评论 -
FastDfs + Nginx 做文件迁移
FastDfs、Nginx 搭建 请参考之前的博客文件迁移项目背景 业务涉及到多个用户上传文件的场景,文件大小在2Mb以内。服务器之前采用的是传统的文件上传方式,在服务器端接收文件,然后存储在一个静态文件夹中。截止到决定使用文件服务器改版,以上传了250张左右的图片,大小在200Mb左右。存在的问题 每次发版的时候必须特别小心该文件夹,虽然有备份脚本,但是随着文件越来越多,占用的地方,备份原创 2017-07-05 09:51:58 · 1654 阅读 · 0 评论 -
Java并发编程实战 之 结构化并发应用程序
结构化并发应用程序至此,第一部分已经学习完毕,从此篇开始,将进行本书第二部分的学习在线程中执行任务将一个复杂的任务拆分为多个任务,并为每个任务开启一个线程。需要确定任务边界 理想状态下,任务之间是相互独立的。例如大多数服务器应用程序,以用户请求为任务边界,每个请求之间互不影响。串行的执行任务模拟一个接受用户请求的服务器假设有一万个请求,而我们的服务器,socket.accept(),每原创 2017-03-23 21:11:46 · 437 阅读 · 0 评论 -
Spring 知识点整理 之 IOC
核心点IOCAOP有什么好处IOC 自动管理 对象创建 和 对象之间的依赖管理,不用再new对象,也不用再set对象。就像使用Maven、gradle管理工程一样。AOP 可以轻松的控制对象的各个生命周期,扩展、监控、拦截对象方法 声明式事务JUNIT 单元测试的集成整合其他框架。IOC核心内容 BenasCoreContextExpressLanguagespring原创 2017-03-13 09:41:49 · 388 阅读 · 0 评论 -
Shiro 实战
项目简介背景 及 需求背景平台融合了多种用户(平台客户、后台运营者)多种登录逻辑(面向客户的、面向运营人员的)混杂在一个项目中需求为后台运营系统增加权限页面元素按照用户角色决定是否展示难点shiro难以对多个登陆逻辑、多个系统做出统一的处理,很难拆分出 不需要shiro 管理的面向客户的系统,也就是说需要拦截的东西是不确定的,不需要拦截的东西是确定的。解决思路想法一刚开始想法错误,考虑原创 2017-03-16 11:40:36 · 406 阅读 · 0 评论 -
Java 并发编程实战之 基础构建模块
同步容器类包括 Vector与HashTable注意与同步容器的区别内部通过Synchronize同步代码块实现同步容器类的问题首先明确所谓的问题并不是线程安全问题多个线程修改同一个同步容器,可能会出现失效数据问题。ArrayIndexOutOfBoundsException 例子如下:public static Object getLast(Vector list){ //问题原创 2017-03-16 21:28:24 · 270 阅读 · 0 评论 -
文件服务器 之 FastDFS
项目背景用例场景,企业或个人认证,涉及到大量图片资料上传。当前是将用户的图片上传到项目的中的一个文件夹下存在的问题图片存储路径位于项目路径下,导致每次发版时,需格外小心注意该文件夹的数据迁移图片没有分目录存储,导致一个目录中图片数量太大,造成图片查找效率低下,严重拖垮系统性能。图片安全性问题,该文件夹直接由servlet容器发布到互联网上,而且图片访问名称没有经过加密,很容易被推断出来,原创 2017-03-28 19:43:00 · 781 阅读 · 0 评论 -
java编程实战之 对象的组合
对象的组合注: 在此章之后不会再赘述 原著的内容,只记录一些自己的理解。设计线程安全的类分析该类的所有域明确这些域的有什么限制条件,即不变性条件。设计访问这些类的线程安全的方法收集同步需求即确定那些 可能出现 if-else 的情况。并使用 同步机制来确保这些情况的线程安全性。依赖状态的操作就是包裹在 if 代码块中的操作。设计合理的内置加锁机制比较困难不要重复制作轮子,使用j原创 2017-03-08 21:08:53 · 564 阅读 · 0 评论 -
java 并发编程实战 之 对象的共享
对象的共享可见性有点类似于数据库事务中的脏读,不可重复度问题,不同的事务就相当于不同的线程,如果没有设置事务的隔离级别,即线程之间没有使用同步机制,这时候 A事务 对数据库的 修改操作由于事务没有提交,所以B事务是看不到A事务修改后的数据的,即发生了脏读。类似的在多线程没有使用同步的情况下,A线程对变量修改,B线程读取变量,在没有同步的情况下,AB的执行顺序是不能保证的。示例代码如下,输出结果可能为原创 2017-03-03 21:37:04 · 431 阅读 · 0 评论 -
java 并发编程实战 之 线程安全性
基础篇java的线程安全性原创 2017-02-28 09:19:31 · 441 阅读 · 0 评论 -
Spring 知识点整理 之 AOP
AOPAOP概述面向切面编程OOP(面向对象编程纵向继承体系)的延伸横向抽取机制应用 事务管理 不做赘述性能监视 使用Spring AOP进行性能监控安全检查 基于 Annotation 拦截的 Spring AOP 权限验证方法缓存 Spring AOP+ehCache简单缓存系统解决方案SpringAOP与Redis搭建缓存术语AOP那原创 2017-03-14 08:55:35 · 346 阅读 · 0 评论 -
Spring 知识点整理 之 JDBC模板
Spring的JDBC的模板流行的模板JDBCorg.springframework.jdbc.core.JdbcTemplateHibernate(以3.0+版本为例)org.springframework.orm.hibernate3.HibernateTemplateIBatis(MyBatis)org.springframework.orm.ibatis.SqlMapClientTem原创 2017-03-15 09:25:41 · 393 阅读 · 0 评论 -
线程池的简单认识
线程池的基本使用为什么要用线程池线程生命名周期的开销非常高资源消耗,活跃的线程数越多,消耗的资源越多,尤其是内存。线程复用JDK为我们提供了哪些支持Executor框架Executor 定义execute接口。ExecutorService 对外接口,主要使用这个来引用一个线程池。ThreadPoolExecutor 线程池核心实现类Executors 工厂类,通过创建不同的Thre原创 2017-03-31 20:13:43 · 440 阅读 · 0 评论 -
Junit4 + spring 注入失败
/** * Created by THINK on 2017/7/11. */import cn.ecotrans.web.service.CreditApplyManager;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.A原创 2017-07-11 15:28:22 · 1146 阅读 · 0 评论 -
Fasdfs 客户端 有没有提供资源池的必要
StorageClient 的 do_upload_file 方法/** * upload file to storage server * @param cmd the command code * @param group_name the group name to upload file to, can be empty * @param master_fi原创 2017-06-28 16:47:17 · 301 阅读 · 0 评论 -
动态图解 红黑树-新增节点
准备知识:新插入的节点都是红色的 为了不违反红黑树的 路径中经过的黑色节点数一致性 原则红叔问题 先上图 旋转(左旋,右旋) 先上图原创 2017-06-19 11:16:36 · 354 阅读 · 0 评论 -
Spring 与 SpringMVC 父子容器问题
父子关系SpringMVC的容器可以访问Spring的容器,在此不做赘述。注解扫包方式下造成的Mvc的bean注入Spring的bean失败spring 父容器扫包时注意不要扫Mvc的Controller,否则会造成Controller注入Service失败原创 2017-06-01 21:37:34 · 289 阅读 · 0 评论 -
JAVA多线程、高并发梳理
首先从概念上讲:JAVA 多线程,高并发。为什么是多线程而不是单线程 思考一下Servlet容器,会同时有多个用户访问,如果是单线程的话,只有一个服务线程来处理多个用户的请求,这样的服务器响应会特别差。为什么多线程之间是并发执行,而不是并行执行 从CPU的角度讲,单线程在获得CPU的执行权期间,如果因为I/O或等待其他资源比如数据库连接,而浪费CPU资源。关于高并发,是让多个线程之间共享CP原创 2017-05-31 09:51:36 · 657 阅读 · 0 评论 -
类静态变量初始化过程 浅析
首先来看一段代码思考一个问题输出结果为什么是counter1=1、counter2=0;原因JVM结束的几种方式System.exit()程序执行完毕遇到异常或错误而导致程序崩溃操作系统错误类的加载、连接与初始化过程方法区存储Class二进制文件,并映射出数据结构。堆区生成Class对象。加载:加载二进制数据连接 验证: 各种校验,验证它是一个class文件准备阶段:为类的静态变原创 2017-04-20 20:27:00 · 575 阅读 · 0 评论