- 浏览: 35844 次
- 性别:
- 来自: 北京
最新评论
文章列表
在virtualbox中安装多台centos虚拟机,每次重启虚拟机都要查看本机的IP,尤其是在集群的环境下,重启虚拟机或者重启电脑都要重新修改集群配置或者是hosts配置,因此我们需要设置固定IP来节省这种麻烦。下面我们来设置固定IP.第一步:在virtualbox中,管理(或者工具)——》全局设定——》网络——》中,添加一个NAT网络:
第二步:在virtulabox中,管理——》主机网络管理——》创建,添加host-only.
第三步:在安装好的centos虚拟机中点击设置(这里以我的zknode1为例):设置——》网络——》添加网卡1和网卡2,分 ...
ThreadLocal源码阅读
- 博客分类:
- java
1.作用:
ThreadLocal是线程本地存储,ThreadLocal为变量在每个线程中都创建了一个副本,每个线程都可以访问自己内部的副本变量。
2.原理:
private final int threadLocalHashCode = nextHashCode();
private static AtomicInteger nextHashCode = new AtomicInteger();
private static final int HASH_INCREMENT = 0x61c88647;
private static int ...
工作中用到的状态模式
- 博客分类:
- 设计模式
状态模式涉及到的类有:
1.上下文,拥有一个或多个状态类实例,对客户端暴露接口;
2.状态接口,封装具体状态类所对应的行为;
3.具体状态类,真正实现状态行为。
状态模式允许一个对象在其内部状态改变的时候改变其行为。
类图如下
代码示例:
先看一下之前同事写的代码:
@Override
public List<DrlTypeDTO> getDrlOperationDTO(String typeId) {
List<Operation> list = Operation.list;
List<Operation> op ...
两个整型链表,按位相加
- 博客分类:
- 算法
需求:
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
你可以假设除了数字 0 之外,这两个数字都不会以零开头。
示例:
输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
原因:342 + 465 = 807
分析:
1.将当前结点初始化为返回列表的哑结点(要对头结点进行操作时,考虑创建哑节点dummy,使用dummy->next表示真正的头节点。这样可以避免处理头节点为空的边界问题)
2.将进位 carry 初始化为 ...
需求:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]我的答案(暴力解决法):
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] ret = new int[2];
for(int i ...
##一、什么是知识图谱?
解释一:知识图谱本质上是语义网络,本体论是语义网络一个最为重要的要素
解释二:知识图谱也叫多关系图,由多种类型的节点和多种类型的边来组成
解释三:百度百科解释:
知识图谱是通过将 ...
在工作中,不管是前后端分离,还是微服务,还是其他方式的接口的调用,都需要编写和维护接口文档。Swagger可以帮助我们更好的编写和维护API文档,提供Restful风格的API,提供的maven依赖可以更好的集成在spring项目中。
springboot使用swagger超级简单:
1.添加maven依赖:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
&l ...
项目中防御xss攻击
- 博客分类:
- 信息安全
###1.什么是XSS攻击
XSS攻击全称是跨站脚本攻击,是经常出现在web应用中的安全漏洞,它允许恶意web用户将代码植入到页面中,比如:sql脚本,srcipt脚本,或者html代码。
黑客界共识是:跨站脚本攻击是新型的缓冲区溢出攻击。
例如:在页面输入一个转账的sql或者js脚本,然后发给后台,后台接收浏览器参数,没有任何校验,接着执行了该脚本,造成数据被篡改。
###2.如何防御XSS攻击
我的项目是springboot项目,要防御XSS攻击只需要增加一个filter,然后在filter中包装http请求。
Talk is cheap,show me the code!
...
最近应公司安全组的要求,所有系统对外请求方式由http方式改为https方式,因为https请求方式对数据进行了加密,http请求方式没有,显然https请求方式是安全的。但是https如何保证数据在网络传输的时候是安全的呢?项目中如何配置改造呢?我们需要了解一下加密算法和数字证书的概念。
###1.对称加密
服务器端生成密钥,然后把密钥发送给客户端,服务端给客户端发送数据时,使用密钥将数据加密传给客户端,客户端收到数据后使用密钥进行解密。如下图:
同理:客户端使用参数向服务端请求数据时,先用密钥将参数加密,然后传给服务器,服务器收到数据后用密钥将数据解密。
缺点:密钥在 ...
思路: 思路比较简单,使用两个栈,一个栈A负责入队,一个栈B负责出队,出队的时候,先判断栈B的元素是否为空,如果为空则将栈A的元素全部出栈放入栈B中,然后栈B元素出栈
代码:
package com.buka.designer.statkqueue;
import java.util.Stack;
/**
* 用栈实现队列
*/
public class StackQueue {
private Stack<Integer> stackA = new Stack<>();
private Stac ...
1.什么是模板设计模式定义:有一个抽象父类定义了模板方法,子类继承父类的方法,按照各自的需求来实现父类的方法。
2.类图:
3.示例:
package com.buka.designer.template;
/** 编程是门艺术,设计源于生活!
*/
public abstract class Ticket {
//模板方法
public void buyTicket() {
login();
selectTicket();
pay();
}
publi
java 1.2后,java对引用的概念进行了扩充,分为:强引用、软引用、弱引用、虚引用。
强引用:就是在程序代码之中普遍存在的,类似Object obj = new Object();只要强引用还在,垃圾收集器永远不会回收掉被引用的对象。
软引用:用来描述一些还有用,但是并非必须的对象。对于软引用关联着的对象,在系统 将要 发生内存溢出异常之前,将会把这些对象列进回收范围之中,并进行第二次回收。SoftRefrence类实现软引用。
弱引用:也用来描述非必须对象,但是他的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集之前。当垃圾收集器工作的时候, ...
标记java对象是否存活
- 博客分类:
- java
在java垃圾收集器对堆内存进行回收之前,需要判断哪些对象还存活着,哪些对象已经死去。
一、引用计数算法
在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1,当引用失效时,计数器值就减1,任何时刻计数器值都为0的对象就是不可能再被使用的对象,该对象会被GC收集。
缺点:java中没有使用引用计数算法,原因是对象之间的循环引用很难解决。
二、根搜索算法
根搜索算法的基本思路为:通过一系列的名为“GC Roots”的对象作为起始点,从起始点开始向下搜索,搜索走过的路径称为引用链,当一个对象到GC Roots没有任何引用链相连时, ...
在讲主键策略之前首先简单介绍一下JPA。
JPA是一种java规范,而不是一种框架,而是一个ORM规范。JPA可以支持多种ORM框架,例如:hibernate,OpenJPA,TopLink,EclipseJPA等。JPA只是提供了统一的规范接口,最终实现由各个数据库厂商来实现。这样设计的目的是为了解决项目中切换ORM框架,数据库连接等所造成的成本。
我们在用JPA开发的时候,经常会在实体类的ID加上@GeneratedValue注解,用于生成表的主键。
例如:
@Id
@GeneratedValue(strategy = Generat ...
Strom学习(二)----Storm计算模型
- 博客分类:
- 大数据
Storm计算模型是一个DAG的计算模型,而且Storm是把DAG和流式计算结合起来。
在Storm的DAG模型里面,最关键的点是Topology,Topology是Storm计算模型DAG的一个体现,也是Storm里面DAG的实现。DAG是一个有向无环图结构。
一个Topology和一个job相似,是一个app的打包运行实例,Topology会被提交到Storm平台上去运行,Storm上跑的是一个一个的Topology。Topology的生命周期是永远不会结束的,只有在运行kill命令时才会结束。
在Topology里面有spout,bolt,tuple,stream,group ...