自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(876)
  • 资源 (649)
  • 收藏
  • 关注

转载 java并发synchronized 锁的膨胀过程(锁的升级过程)深入剖析(1)

我们先来说一下我们为什么需要锁?因为在并发情况为了保证线程的安全性,是在一个多线程环境下正确性的概念,也就是保证多线程环境下共享的、可修改的状态的正确性(这里的状态指的是程序里的数据),在java程序中我们可以使用synchronized关键字来对程序进行加锁。当声明synchronized代码块的时候,编译成的字节码将包含monitorenter指令和monitorexit指令。这两种指令均会消耗操作数栈上的一个引用类型的元素(也就是 synchronized 关键字括号里的引用),作为所要加..

2021-02-02 15:52:34 1064

转载 JVM启动参数

不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由于各个程序具备不同的特点,如:web和GUI程序就有很大区别(Web可以适当的停顿,但GUI停顿是客户无法接受的),而且由于跑在各个机器上的配置不同(主要cup个数,内存不同),所以使用的GC种类也会不同(如何选择见GC种类及如何选择)。本文将注重介绍JVM、

2021-01-31 10:51:54 126

转载 AtomicStampedReference源码分析

之前的文章已经介绍过CAS的操作原理,它虽然能够保证数据的原子性,但还是会有一个ABA的问题。    那么什么是ABA的问题呢?假设有一个共享变量“num”,有个线程A在第一次进行修改的时候把num的值修改成了33。修改成功之后,紧接着又立刻把“num”的修改回了22。另外一个线程B再去修改这个值的时候并不能感知到这个值被修改过。    换句话说,别人把你账户里面的钱拿出来去投资,在你发现之前又给你还了回去,那这个钱还是原来的那个钱吗?你老婆出轨之后又回到了你身边,还是你原来的那个老婆吗?    

2021-01-29 11:09:57 175

转载 原子性 atomic 类用法

当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问题,synchronized会保证多线程不会同时更新变量i。 import java.util.concurrent.CountDownLatch;public class UnSa..

2021-01-27 23:44:23 306

转载 CAS的ABA问题描述 AtomicStampReference

CAS的ABA问题描述在CAS操作的时候,其他线程将当前变量的值从A改成B,又改回A; CAS线程用期望值A与当前变量比较的时候,发现当前变量没有变,于是CAS就将当前变量进行了交换操作,但其实当前变量改变过,这与设计思想是不符合的; ABA问题的解决思路:每次当前变量更新的时候,将当前变量的版本号加1;AtomicStampReference示例public boolean compareAndSet( V expectedReference, V newReference, int

2021-01-27 22:18:46 204

原创 spring boot redis 分布式锁

yml文件 redis: host: 112.35.123.178 port: 40197 password: redisroot timeout: 5000 database: 0 jedis: pool: min-idle: 0 max-idle: 8 max-active: 8 max-wait: -1RedisConfig.javaimport...

2021-01-27 17:09:30 490

转载 CompareAndSwap原子操作原理

在翻阅AQS(AbstractQueuedSynchronizer)类的过程中,发现其进行原子操作的时候采用的是CAS。涉及的代码如下: 1: private static final Unsafe unsafe = Unsafe.getUnsafe(); 2: private static final long stateOffset; 3: private static final long headOffset; 4: pri

2021-01-26 14:37:29 827

转载 happens-before规则和as-if-serial语义

概述本文大部分整理自《Java并发编程的艺术》,温故而知新,加深对基础的理解程度。指令序列的重排序我们在编写代码的时候,通常自上而下编写,那么希望执行的顺序,理论上也是逐步串行执行,但是为了提高性能,编译器和处理器常常会对指令做重排序。1) 编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。2) 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。3) 内存系统的重排

2021-01-25 21:15:28 162

转载 java 8大happen-before原则超全面详解

再来重复下八大原则:单线程happen-before原则:在同一个线程中,书写在前面的操作happen-before后面的操作。 锁的happen-before原则:同一个锁的unlock操作happen-before此锁的lock操作。 volatile的happen-before原则:对一个volatile变量的写操作happen-before对此变量的任意操作(当然也包括写操作了)。 happen-before的传递性原则:如果A操作 happen-before B操作,B操作happen-

2021-01-25 21:10:53 401

转载 wait放弃对象锁_Java线程中wait、await、sleep、yield、join用法总结

wait()、notify()、notifyAll()用法obj.wait()/obj.wait(long timeout)是Object中的方法,当线程调用wait()方法,当前线程释放对象锁,进入等待队列。 obj.notify()/obj.nogifyAll()是Object中的方法,唤醒在此对象上wait()的单个或者所有线程。测试代码:public class ThreadWaitNotify {public static void main(String[] args) th

2021-01-24 10:41:33 320

转载 synchronized 和Lock区别

synchronized实现原理Java中每一个对象都可以作为锁,这是synchronized实现同步的基础:普通同步方法,锁是当前实例对象 静态同步方法,锁是当前类的class对象 同步方法块,锁是括号里面的对象 当一个线程访问同步代码块时,它首先是需要得到锁,当退出或者抛出异常时必须要释放锁,那么它是如何来实现这个机制的呢?我们先看一段简单的代码:package cn.alibab.javap;public class SynchronizedTest { public

2021-01-24 10:29:30 102

原创 AQS相关逻辑解析

关心QPS TPS

2021-01-24 10:22:41 132

转载 ABA问题

CAS:对于内存中的某一个值V,提供一个旧值A和一个新值B。如果提供的旧值V和A相等就把B写入V。这个过程是原子性的。CAS执行结果要么成功要么失败,对于失败的情形下一班采用不断重试。或者放弃。ABA:如果另一个线程修改V值假设原来是A,先修改成B,再修改回成A。当前线程的CAS操作无法分辨当前V值是否发生过变化。关于ABA问题我想了一个例子:在你非常渴的情况下你发现一个盛满水的杯子,你一饮而尽。之后再给杯子里重新倒满水。然后你离开,当杯子的真正主人回来时看到杯子还是盛满水,他当然不知道是否被人喝

2021-01-24 10:05:24 127

转载 原子操作类AtomicInteger详解

为什么需要AtomicInteger原子操作类?对于Java中的运算操作,例如自增或自减,若没有进行额外的同步操作,在多线程环境下就是线程不安全的。num++解析为num=num+1,明显,这个操作不具备原子性,多线程并发共享这个变量时必然会出现问题。测试代码如下:public class AtomicIntegerTest {private static final int THREADS_CONUT = 20;public static int count = 0;p.

2021-01-24 09:50:03 417

转载 CountDownLatch的理解和使用 多线程同步器

CountDownLatch的理解和使用在笔者想要了解Thrift时候,找到一个博主写的系统间通信技术的架构设计,在了解和学习的过程中遇到很多小问题和基础知识,自己还是不够清楚,就查询和总结下。因为笔者也都是从网上找的一些资料,好的资料笔者都是自己收敲一遍,这样觉得能够加深下印象,引发更多的思考,毕竟很多时候笔者感觉自己都是七秒的记忆。在第一篇文章中遇到了一个CountDownLatch同步计数器,当计数器数值减为0时,所有受其影响而等待的线程将会被激活,这样保证模拟并发请求的真实性。Cou

2021-01-24 09:40:39 162

转载 CAS和AQS

CAS全称(Compare And Swap),比较交换Unsafe类是CAS的核心类,提供硬件级别的原子操作。// 对象、对象的地址、预期值、修改值public final native boolean compareAndSwapInt(Object var1, long var2, int var4, int var5);缺点:开销大:在并发量比较高的情况下,如果反复尝试更新某个变量,却又一直更新不成功,会给CPU带来较大的压力 ABA问题:当变量从A修改为B在修改回.

2021-01-24 09:33:05 191

转载 disruptor 介绍

一、背景1.来源Disruptor是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内部的内存队列的延迟问题,而不是分布式队列。基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCon演讲后,获得了业界关注。2.应用背景和介绍据目前资料显示:应用Disruptor的知名项目有如下的一些:Storm, Camel, Log4j2,还有目前的美团点评技术团队也有很多不少的应用,或者说有一些借鉴了它的设计机制。Disruptor是一个高性能的线程间异步通信

2021-01-24 09:29:33 617

转载 Redis+AQS

前言对于java的单进程应用来说,存在资源竞争的场景可以使用synchronized关键字和Lock来对资源进行加锁,使整个操作具有原子性。但是对于多进程或者分布式的应用来说,上面提到的锁不共享,做不到互相通讯,所以就需要分布式锁来解决问题了。废话不多说,直接进入正题,下面结合AQS和Redis来实现分布式锁。代码中大部分都是参考ReentrantLock来实现的,所以读者可以先去了解一下ReentranLock和AQS参阅:http://www.importnew.com/27477.html

2021-01-24 09:25:35 247

转载 jvisualvm安装Visual GC插件

给jdk自带的jvisualvm安装Visual GC插件,遇到We're sorry the java.net site has closed(我们很抱歉java.net网站已经关闭)1、找到新的更新地址visualvm新访问地址:https://visualvm.github.io/index.html进入“Plugins”,找到对应自己JDK版本的更新地址2、进入jvisualvm的插件管理"工具" - "插件"在"设置"中修改url地址为刚才我们在github上找到的

2021-01-24 08:32:19 201

原创 jvm指令码

建议直接复制保存至本地,研究jvm运行,执行指令非常有帮助一、未归类系列A此系列暂未归类。指令码 助记符 说明0x00 nop 什么都不做0x01 aconst_null 将null推送至栈顶二、const系列该系列命令主要负责把简单的数值类型送到栈顶。该系列命令不带参数。注意只把简单的数值类型送到栈顶时,才使用如下的命令。比如对应int型才该方式只能把-1,0,1,2,3,4,5(分别采用iconst_m1,iconst_0, iconst_1, iconst_2, iconst_3,

2021-01-23 16:43:35 213

原创 JMM模型到并发编程

电脑:内存 L1 L2 L3 缓存 CPU ctrl+atl+del就可以看到Java 有线程内存,在执行线程的时候,会从主内存把变量加载到工作内存(缓存),所以,在多线程同时改变一个静态变量时候,实际是分开相互不影响的下面是程序例子以下是运算结果从此可以看出,第一个线程并没有退出,initFlag因为在第一个线程没有变成false,因为是工作内存如果想让第一个内存的变量改变,加一个修饰 volatile工作原理在没有加v...

2021-01-22 23:58:52 390

转载 ShardingSphere分库分表实战

ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC、Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成。 他们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、容器、云原生等各种多样化的应用场景。 ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。 它与NoSQL和

2021-01-22 11:06:08 559 1

原创 几张图可以理解GC JVM调优的内容

Javap -p 和Javap -v 可以查看.class文件的源码文件到指令码,程序计数器:code部分是 程序计数器的部分 代表当前执行的行操作数栈:是从局部变量表里拿出变量计算使用的临时栈动态链接:栈内执行方法与方法区里加在类的方法 映射使用的指针方法出口:就是栈帧结束后,返回到上一方法的code地址堆:放new 的方法本地方法栈:比如thread下native的start0 是调用windows下c++产生的start0方法,时候,临时使用的栈方法区:元空间 存放 ...

2021-01-22 10:23:41 250

转载 基于redis分布式锁实现的多线程并发程序

前两个版本的代码 都或多或少存在一定的问题,虽然可能微乎其微,但是程序需要严谨再严谨,第一个版本问题: 局限于单机版,依赖于 Jvm的锁 第二个版本问题: 极端情况下,解锁逻辑的问题,线程B的锁,可能会被线程A解掉,这种情况实际上是不合理的。1. 由于是客户端自己生成过期时间,所以需要强制要求分布式下每个客户端的时间必须同步。 2. 当锁过期的时候,如果多个客户端同时执行jedis.getSet()方法,那么虽然最终只有一个客户端可以加锁,但是这个客户端的锁的过期时间可能被其他客户端覆盖。.

2021-01-22 00:46:53 710

转载 Java——线程锁,死锁,等待唤醒机制

一、线程锁线程安全问题其实,线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。由于线程休眠的特性,从哪休眠就从哪继续执行(一个线程的事情还没干完就被其他线程挤下去了),回来继续干就会导致操作的全局变量或静态变量出现问题。为了解决这个问题,我们就需要让线程执行完毕(不能被其他线程挤下去),以下是几种解决办法。1、同步代码块

2021-01-22 00:17:15 450 1

原创 K8S相关内容

常用工具:docker linux k8s kubeadm概念etcd 数据库 类似redisapi server 接口对外提供api 调用 可以命令 kubectl 或者 kube-proxy,能访问etcd,事件总线scheduler 调度决策的组件 掌握新的情况,进行决策及分布pod放在哪些nodecontroller 定时监控 保证实际和预期一样work节点kubelet 资源管理者 在api server上container runtime 来管理容器 启动 关闭容器 收集..

2021-01-21 23:43:33 230 1

转载 Java基于redis实现分布式锁(SpringBoot)

前言分布式锁,其实原理是就是多台机器,去争抢一个资源,谁争抢成功,那么谁就持有了这把锁,然后去执行后续的业务逻辑,执行完毕后,把锁释放掉。可以通过多种途径实现分布式锁,例如利用数据库(mysql等),插入一条记录(唯一索引),谁插入成功,谁就持有锁;还可通过zookeeper来实现分布式锁,谁创建节点成功,谁就持有锁。本文介绍通过redis来实现分布式锁。本文使用springboot提供的RedisTemplate来操作redis,可以参考我之前的文章【快学springboot】13.操作red

2021-01-21 23:39:36 252

转载 Rancher中的服务升级实验

创建一个空的应用myAPP,在myAPP应用中,创建一个服务nginx-test,包含2个容器副本,使用nginx:1.13.0镜像。假设使用一段时期以后,nginx的版本升级到1.13.1了,如何将该服务的镜像版本升级到新的版本?实验步骤及截图如下:步骤截图:01-添加一个服务-名称nginx-test,含2个容器,选择镜像nginx:1.13.002-服务nginx-test采用nginx 1.13.0版本,服务升级前的状态03-点击升级按钮04-升级到下一个版本,...

2021-01-15 09:40:25 467 1

转载 docker 启动的 jenkins 中调用宿主机docker进行build

前言期初有这个需求感觉就跟套娃一样,你在docker 中调用docker,笑哭……这个也太逗了。不过的确遇到了,因为jenkins 容器中没有docker ,所以在编译 docker build 的时候 会出现 docker command 不存在。好吧,解决他!解决其实也很简单,把宿主机的 docker.socket 和 docker 挂在到容器内部,就可以使用了docker-composeversion: "3"services: jenkinsServer: im

2021-01-14 20:40:55 1065 1

转载 squirrel-foundation-demo

一个简单的squirrel-foundation-demo利用状态机模拟一个订单的支付过程。squirrel-foundation没有任何严重的依赖关系,因此基本上它应该是高度可嵌入的。squirrel-foundation没有整合spring框架,所以首先要用spring集成squirrel-foundation。spring集成squirrel-foundation(1).通过Spring创建StateMachineBuilder实例(单例);(2).业务函数中通过(1)的StateMachi

2021-01-14 15:15:30 751

转载 Spring基于状态机squirrel-foundation简单使用

squirrel-foundation的一些使用方法在百度上资料还是比较少,我是根据以下三个大佬写的文章借鉴的,在这里记录一下。1、squirrel-foundation-demo2、Squirrel使用(中文文档)3、squirrel-foundation状态机的使用细节我在这里直接粘贴代码,便于自己之后理解。 /** * 通过Spring创建StateMachineBuilder实例,通过buidler创建状态机(单例) * 创建无类型化状态机,简化状态机,防.

2021-01-08 17:16:04 1328

转载 状态机

背景1.很多文章都分享过状态管理的相关方案,方案和具体业务相关性强,可以给我们提供通用的设计思路与方法论,很难提供一些通用工具组件出来 2.本次调研的主要目的是,提供实现状态引擎可以共用的工具组件,来提高状态管理相关的开发效率,避免重复造轮子 3.本次主要调研了业界常用的、开源的、社区文档说明较多的两种方案 4.spring-statemachine是spring官方提供的状态机实现 5.squirrel-foundation是一个开源的轻量级的状态机实现(马蜂窝交易系统、美团ERP研发中心方案

2021-01-08 09:58:42 732

原创 c#扫描图片去黑边(扫描仪去黑边)

/// <summary> /// 自动去除图像扫描黑边 /// </summary> /// <param name="fileName"></param> public static void AutoCutBlackEdge(string fileName) { //打开图像 Bitmap bmp = OpenImage(fi...

2020-12-15 10:18:02 1194

转载 java main方法里调用mapper

在main方法中调用mybatis的mapper,一次性执行导入数据功能package com.runxsoft.test;import com.runxsoft.iutils.common.utils.UserUtils;import com.runxsoft.superwe.base.SqlVo;import com.runxsoft.superwe.base.mapper.ProtogenesisMapper;import com.runxsoft.superwe.valueCard..

2020-12-10 10:30:40 4327

转载 Oracle字符分隔函数(split)

为了让 PL/SQL 函数返回数据的多个行,必须通过返回一个 REF CURSOR 或一个数据集合来完成。REF CURSOR 的这种情况局限于可以从查询中选择的数据,而整个集合在可以返回前,必须进行具体化。Oracle 9i 通过引入的管道化表函数纠正了后一种情况。表函数是返回整个行的集(通常作为一个集合)的函数,可以直接从 SQL 语句中进行查询,就好像它是一个真正的数据库表一样。管道化表函数与之相似,但是它像在构建时一样返回数据,而不是一次全部返回。管道化表函数更加有效,因为数据可以尽可能快地返回。

2020-11-03 11:30:06 1078

转载 docker linux k8s kubeadm

一. 安装docker1.添加yum国内依赖yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.安装dockeryum -y install docker-ce docker-ce-cli containerd.io3.启动dockersystemctl start docker4.添加开机自启systemctl ...

2020-10-31 20:05:15 198

转载 Windows NAT端口映射

Windows本身命令行支持配置端口映射,条件是已经安装了IPV6,启不启用都无所谓,我在win7和server2008上是可以的。xp,2003装了ipv6协议也是可以的。CMD下操作增加端口映射,将10.10.10.10的8080映射到10.10.10.11的80端口netsh interface portproxy add v4tov4 listenport=8080 listenaddress=10.10.10.10 connectport=80 connectaddress=10.10.

2020-10-31 13:01:57 444

转载 2020-10-26java 实现pdf转换成图片

<dependency> <groupId>org.apache.pdfbox</groupId> <artifactId>fontbox</artifactId> <version>2.0.9</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox --&g.

2020-10-26 17:49:06 357

转载 Java多线程 ——线程基础和锁锁锁

Java多线程(一) 一、线程的定义 二、Synchronize线程同步 三、偏向锁、自旋锁、重量级锁 四、volatile关键字 4.1.普通变量运算的物理意义 4.2.有无解决的方案 4.3.volatile的几个特性(参考https://www.cnblogs.com/kubidemanong/p/9505944.html) 五、Compare And Swap无锁自旋优化技术和ABA版本号机制 5.1.CAS操作原理 5.2.atomic包 5

2020-10-26 17:15:17 164

转载 hping3工具DOS攻击实验

需要两台机器,一台扮演攻击源,另一做目标源。 攻击源地址:10.0.40.4 被攻击机器地址:10.0.40.246 2 被攻击的机器上安装tcpdump,tcpdump主要是用来抓包的,看看网络数据包是否到达。 $yum install tcpdump -y 3 首先开启tcpdump抓取来自攻击源的数据包,其他数据包应该过排除。 $tcpdump -i eth0 src host 10.0.40.4 -i 是选择哪个网卡 ...

2020-10-16 10:56:35 3075 1

加特林压力测试代码示例 gatling stress test samples

加特林压力测试代码示例 gatling stress test samples 可以增加线程 持续时间来达到一定量的QPS

2022-05-24

C# 隐写 二维码隐藏到网页

打开yxs.html,然后打开程序,可以测试出截取网页的图片后,如果在其他渠道,比如画图,粘贴就无水印,粘贴到微信,就加上了二维码溯源水印

2021-05-18

LSB隐写术 C#源代码

隐写术是隐藏的艺术通信隐藏的以事实的地方,由隐藏信息的其他信息。可以使用许多不同载体的文件格式,但数字图像是最流行的因为他们在互联网上的频率。对于隐藏秘密信息在图像中的,都存在一个种类繁多的信息隐藏技术有些比其他人更复杂,他们都有各自的强和弱点。不同的应用程序可能需要绝对隐形的秘密信息,而另一些需要一个大的秘密消息来被隐藏。本项目报告打算给图像隐写术,其用途和技术的概述

2021-05-17

javac++.zip

JDK7,OpenJDK(HotSpot JVM、Javac)源代码学习研究(包括代码注释、文档、用于代码分析的测试用例)

2021-02-03

de4dot.zip

1、CMD 打开 De4Dot 所在文件夹 最好是以管理员身份运行CMD 2、输入 De4Dot C:\Users\muzigaiyu\Desktop\demo.exe 回车 3、成功后会在软件所在文件夹生成 demo-cleaned.exe 在用dotpeek 或者其他软件打开exe即可看到net源码 4、 一变混合 可以加 -v参数

2020-06-01

H5-Kline-master.zip

H5-Kline是基于echarts封装的非常轻量级的股票行情图表 功能点 基于ECharts的股票行情分时、K线、MACD、DIF、DEA图表 (绝无仅有)

2020-03-19

使用SpringBoot整合jersey 实现Restful web service.同时整合springmvc。

使用SpringBoot整合jersey 实现Restful web service.同时整合springmvc。

2020-02-23

NET_20.rar

在Visual Studio2005中实现SFTP上传,下载的dll文件,在Visual Studio2005中实现SFTP上传,下载的dll文件

2020-01-14

Spring Boot 拦截器+kibana 配置.zip

Spring Boot 拦截器 各项日志 通过kibana具体查询分析 Advanced Settings [7.2.0] 综合分析 定时任务执行日志 数据同步日志 用户访问操作日志 异常日志 内存日志 Spring逻辑参数执行日志 SQL流水日志 Feign接口调用日志 // 获取header中的属性 RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); if (requestAttributes == null) { return; } HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); Enumeration<String> headerNames = request.getHeaderNames(); if (headerNames != null) { while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); Enumeration<String> values = request.getHeaders(name); while (values.hasMoreElements()) { String value = values.nextElement(); if("content-type".equalsIgnoreCase(name) && value.contains("multipart/form-data")){ break; } template.header(name, value); } } } }

2019-09-04

SKU 相关代码及知识

1、模拟淘宝产品SKU信息的组合添加规格组合 2、SKUDemo 淘宝商户端发布商品时,动态生成SKU表格的实例 可以根据自己项目 修改js文件实现 3、HeadSearchView 商城的商品有多规格的时候的选择页面。能够无限制的添加规格类型如:颜色,尺码,风格,等 4、html.zip可以自定义sku属性,根据自己的需求来填写数据后生成想要的表格数据 5、SKUDemo (1) 销售属性;仿淘宝SKU;SKU表格 6、添加商品规格例子新.rar 添加商品规格例子新,添加商品规格例子新,添加商品规格例子新,添加商品规格例子新,添加商品规格例子新,添加商品规格 例子新,添加商品规格例子新

2019-01-23

Face++ C# Demo实现web API 人脸比对,识别等接口

实现了以下接口 https://api-cn.faceplusplus.com/facepp/v3/compare https://api-cn.faceplusplus.com/facepp/v3/detect https://api-cn.faceplusplus.com/facepp/v3/faceset/create https://api-cn.faceplusplus.com/facepp/v3/faceset/addface https://api-cn.faceplusplus.com/facepp/v3/search 人脸识别,人脸集合创建,查找,两张人脸图片比对 并对返回结

2019-01-05

ELK6.2.4搭建

开源实时日志分析ELK平台能够完美的解决我们上述的问题,ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成。 官方网站:https://www.elastic.co/products Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。 Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。 Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。 ELK下载:https://www.elastic.co/downloads/ ELK工作原理: ElasticSearch 配置ElasticSearch: 1 2 unzip elasticsearch-6.2.4.zip cd elasticsearch-6.2.4 然后编辑ES的配置文件: 1 vi config/elasticsearch.yml 修改以下配置项: 1 2 3 4 5 6 7 cluster.name=es_cluster node.name=node0 path.data=/tmp/elasticsearch/data path.logs=/tmp/elasticsearch/logs #当前hostname或IP,我这里是node1 network.host=node1 network.port=9200 其他的选项保持默认,然后启动ES: 1 nohup sh elasticsearch > nohup.log & 注意: 1.需要添加用户elk,ES不能以root用户进行启动 2.可能出现的错误: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] 1 2 3 vi /etc/security/limits.conf elk soft nofile 819200 elk hard nofile 819200 max number of threads [1024] for user [work] likely too low, increase to at least [2048] 1 2 3 4 vi /etc/security/limits.d/90-nproc.conf * soft nproc 1024 #修改为: * soft nproc 2048 max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144] 1 2 3 4 5 vi /etc/sysctl.conf #增加改行配置: vm.max_map_count=655360 #保存退出后,执行: sysctl -p 另外再配置ES的时候,threadpool.bulk.queue_size 已经变成了thread_pool.bulk.queue_size ,ES_HEAP_SIZE,ES_MAX_MEM等配置都变为ES_JAVA_OPTS这一配置项,如限制内存最大最小为1G: 1 export ES_JAVA_OPTS="-Xms1g -Xmx1g" 然后可以打开页面http://node1:9200/,将会看到以下内容:(我是通过外部访问虚拟机,因此为了简单没有配置host文件,直接用ip访问) Logstash 配置Logstash: 1 2 tar -zxvf logstash-6.2.4.tar.gz cd logstash-6.2.4 编写配置文件(名字和位置可以随意,这里我放在config目录下,取名为log_app.conf): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 vi config/log_app.config #以下为内容 input { file { path => "/usr/local/software/elk/app.log" start_position => "beginning" #从文件开始处读写 } # stdin {} #可以从标准输入读数据 } filter { #Only matched data are send to output. } output { # For detail config for elasticsearch as output, # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html elasticsearch { action => "index" #The operation on ES hosts => "node1:9200" #ElasticSearch host, can be array. index => "applog" #The index to write data to. } } 其他的选项保持默认,然后启动Logstash: 1 2 # -f为指定配置文件 nohup sh ./bin/logstash -f ../config/log_app.config > nohup.log & 日志: Kibana 配置Kibana: 1 2 tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz cd kibana-6.2.4-linux-x86_64 修改以下几项(由于是单机版的,因此host的值也可以使用localhost来代替,这里仅仅作为演示): 1 2 3 4 server.port: 5601 server.host: “node1” elasticsearch.url: http://node1:9200 kibana.index: “.kibana” 启动kibana: 1 nohup sh ./bin/kibana > nohup.log & 启动后界面: 然后需要创建index,步骤如下: ①点击左边iscover出现以下界面 ②按照注释配置,然后点击Next step,在第二页 选择@timestamp点击create创建 ③创建完成之后,可以看到以下一个界面,红框内是 自动生成的域,也可以理解为 跟数据库中的字段类似,其中有一个message字段,就是我们想要的日志信息。 ④再次点击Discover出现以下界面,可以看到默认搜索的是最后15分钟的日志,可以通过点击设置搜索的时间范围. ⑤可以点击右侧域的add设置需要显示的字段 添加完成之后,日志显示如下:

2018-11-15

Xshell6 可用的免费版本

Xshell6 可用的免费版本

2018-11-13

最新百度地图API Javascript V2.0 离线版本。 完全脱离百度在线地图, 有比较完善的示例Demo, 默认带有全国8级地图

最新百度地图API Javascript V2.0 离线版本。 完全脱离百度在线地图, 有比较完善的示例Demo, 默认带有全国8级地图

2018-11-13

Fiddler4 以及证书https

Fiddler简介: 一个很强大的抓包工具 1.安装: Filddler官网:点击打开链接 我安装的是filddler4:点击打开链接 直接下载文件,然后一路下一步就可以了 1.下载文件: 2.安装文件一路下一步即可 3.安装完成后打开软件出现: 接着安装完成后来说说遇到的坑——Filddler安全证书安装 安装证书失败的解决: 1、首先确保安装的 Fiddler 是较新的版本,比较老的版本可能会出现安装不上fiddler证书生成器的问题。 2、关闭Fiddler。 3、下载并安装Fiddler证书生成器。点击打开链接 4、打开Fiddler,点击工具栏中的Tools——>Fiddler Options… 5、切换到 HTTPS 选项卡,勾选 Capture HTTPS CONNECTs,勾选 Decrypt HTTPS trafic,会弹出安装证书的提示。一路点是或确定安装即可。 6、重启fiddler,依然停留在 HTTPS 选项卡,点击右侧Actions,能看一个下拉菜单,点击 Export Root Certificate to Desktop,此时证书会生成到桌面上,名为 FiddlerRoot.cer,点OK保存

2018-11-07

FiddlerCertMaker

关于高版本Fiddler导出的证书在ipad上安装显示未验证的问题,Google原文如下: Q:Can Fiddler intercept traffic from Apple iOS devices like iPad/iPhone/iPodTouch and Android devices? A: Yes, but these devices may not becompatible with the default certificates Fiddler generates. To resolve the incompatibility, you mayreplace Fiddler's default certificate generator with one that generatescertificates containing flags (e.g. AKID, SKID) that are compatible with theseplatforms. Simply download and install the newCertificateMaker and restart Fiddler. 安装一个证书生成器

2018-11-01

.net2.0 Mysql

String mysqlStr = "Database=test;Data Source=127.0.0.1;User Id=root;Password=root;pooling=false;CharSet=utf8;port=3306"; MySqlConnection mysql = new MySqlConnection(mysqlStr); 或者 string MyConString = "DRIVER={MySQL ODBC 3.51 Driver};" + "SERVER=localhost;" + "DATABASE=inv;" + "UID=root;" + "PASSWORD=root;" + "OPTION=3"; OdbcConnection MyConnection = newOdbcConnection(MyConString);

2018-10-24

ELK( ElasticSearch、Logstash和Kiabana)

通常,日志被分散的储存不同的设备上。如果你管理数十上百台服务器,你还在使用依次登录每台机器的传统方法查阅日志。这样是不是感觉很繁琐和效率低下。开源实时日志分析ELK平台能够完美的解决日志收集和日志检索、分析的问题,ELK就是指ElasticSearch、Logstash和Kiabana三个开源工具。 因为ELK是可以跨平台部署,因此非常适用于多平台部署的应用。 二 环境准备 1. 安装JDK1.8环境 2. 下载ELK软件包 logstash: https://artifacts.elastic.co/downloads/logstash/logstash-5.5.0.zip elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.0.zip kibana: https://artifacts.elastic.co/downloads/kibana/kibana-5.5.0-windows-x86.zip 分别解压下载的软件,elasticsearch,logstash,kibana 可以放在一个统一文件夹下 三 部署 1.配置logstash 在logstash文件夹的下bin目录创建配置文件logstash.conf ,内容如下: input { # 以文件作为来源 file { # 日志文件路径 path => "F:\test\dp.log" } } filter { #定义数据的格式,正则解析日志(根据实际需要对日志日志过滤、收集) grok { match => { "message" => "%{IPV4:clientIP}|%{GREEDYDATA:request}|%{NUMBER:duration}"} } #根据需要对数据的类型转换 mutate { convert => { "duration" => "integer" }} } # 定义输出 output { elasticsearch { hosts => ["localhost:9200"] #Elasticsearch 默认端口 } }   在bin目录下创建run.bat,写入一下脚本: logstash.bat -f logstash.conf 执行run.bat启动logstash。 2. 配置Elasticsearch elasticsearch.bat即可启动。 启动后浏览器访问 127.0.0.1:9200 ,出现以下的json表示成功。 3.配置kibana Kibana启动时从文件kibana.yml读取属性。默认设置配置Kibana运行localhost:5601。要更改主机或端口号,或者连接到在其他机器上运行的Elasticsearch,需要更新kibana.yml文件。 kibana.bat启动Kibana。

2018-07-20

eureka-server+gateway-service+user-service+zipkin-server

eureka-server+gateway-service+user-service+zipkin-server 本文案例一共四个工程采用多Module形式。需要新建一个主Maven工程,主要指定了Spring Boot的版本为1.5.3,Spring Cloud版本为Dalston.RELEASE。包含了eureka-server工程,作为服务注册中心,eureka-server的创建过程这里不重复;zipkin-server作为链路追踪服务中心,负责存储链路数据;gateway-service作为服务网关工程,负责请求的转发,同时它也作为链路追踪客户端,负责产生数据,并上传给zipkin-service;user-service为一个应用服务,对外暴露API接口,同时它也作为链路追踪客户端,负责产生数据。

2018-07-18

vue 一套前端框架

vue-element-admin is a production-ready solution for admin interfaces. Based on Vue.js and use the UI Toolkit -- element. vue-element-admin is a magical vue admin, it based on the newest development stack of vue, built-in i18n solution, typical templates for enterprise applications, lots of awesome features. It helps you build a large complex Single-Page Applications. I believe whatever your needs are, this project will help you.

2018-05-31

weUI 入门教程:http://blog.csdn.net/libin_1/article/details/50734266

weUI 入门教程:http://blog.csdn.net/libin_1/article/details/50734266

2018-05-17

PostMan工具离线安装

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件 打开chrome浏览器,单击右上角“≡”图标--&gt; “更多工具” --&gt; “扩展程序”; 下载类似Postman_v4.9.2.crx以crx为后缀的文件,改成“zip”或"rar"文件,解压该文件, 将文件夹里的“_metadata”文件夹名字改成“metadata”; 点击chrome浏览器“加载正在开发的扩展程序...”按钮,然后选中解压的文件夹; 点击加载后的postman界面上的“启动”即可。

2018-04-17

DsoFramer_KB311765_x86.exe 微软官方office控件,其中含源码,C、C++、Web 三种demo

DsoFramer_KB311765_x86.exe 微软官方office控件,其中含源码,C、C++、Web 三种demo

2018-04-13

weui开发的手机商城模板

weui开发的一完整手机移动端商城购物平台整站html模板源码下载,包括首页,购物车,订单管理,评价,分类,会员中心等,全面到注册协议都弄好了。

2018-04-12

nodejs上传下载管理文件

nodejs上传下载管理文件nodejs上传下载管理文件nodejs上传下载管理文件nodejs上传下载管理文件nodejs上传下载管理文件

2018-04-06

使用springboot集成jseesite

使用 springboot 改造 jeesite,只保留最简单的系统配置 。 介绍 1、运行主类,登录 admin/admin com.wolfking.jeesite.WolfkingJeesiteDriver 2、砍掉了所有的冗余的东西,只保留系统配置,数据库脚本 wolfking-jeesite.sql 3、使用 springboot 集成,使用 HikariDataSource 数据源 4、mvn install 打包运行 java -jar wolfking-jeesite-1.0.0-SNAPSHOT.war 5、如果使用外置的配置文件,在启动参数添加 java -jar --spring.config.location=./application.yml wolfking-jeesite-1.0.0-SNAPSHOT.war 6、由于 boot 对 jsp 的集成问题,只能用tomcat 和jetty 启动,undertow 有问题

2018-03-28

Windows Server 2008 + tomcat 配置使用SSL.docx

Windows Server 2008 + tomcat 配置使用SSLWindows Server 2008 + tomcat 配置使用SSLWindows Server 2008 + tomcat 配置使用SSL

2018-02-23

源自开源的甘特图组件jquery gantt 可拖拽

源自开源的甘特图组件jquery gantt,加上了拖拽和resize功能,enjoy!

2018-02-12

C# idx1-ubyte idx3-ubyte转图片 文字 浏览器

扩展名为idx1-ubyte一般为Lables idx3-ubyte是图片张量集合 要同时选中两个文件才能进行同时预览是什么值

2018-01-04

TensorFlowSharp-master

TensorFlowSharp-masterTensorFlowSharp-masterTensorFlowSharp-masterTensorFlowSharp-master

2018-01-02

tensorflow 摄像头调用 Inception v1分类 vs2017 C#

TensorFlow自带例子已经包含了android和ios下的摄像头图像分类示例Inception v1,这里补充一个Windows下的,使用AForge库(www.aforgenet.com)操作摄像头。

2018-01-02

tensorflow-sharp例子大全

learn-tensorflow-sharp-master 里面已经有了libtensorflow.dll

2018-01-02

libtensorflow.dll

libtensorflow.dll 应用于TensorflowSharp的目录下使用的资源

2018-01-02

Docker 快速安装caffe步骤

1.打开 2.解压 3.将这个压缩包传到linux里面 (我的环境如下: 我在win7虚拟机里面装的linux,用xshell用具链接linux,xftp实现win7和linux文件的传输。 3 可以使用 docker import 从容器快照文件中再导入为镜像,例如 cat ubuntu_c affe.tar | sudo docker import - test/ubuntu_caffe:v1.0 docker images 4建一个 Docker 实例: docker run -i -t test/ubuntu_caffe:v1.0 /bin/bash 5 执行训练: cd ~ cd caffe ./examples/mnist/train_lenet.sh 比较慢,多等一会儿!!! PS:centos7安装docker(其他版本安装centos自行百度) CentOS 7 中 Docker 的安装 Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令: 1.[root@localhost ~]# yum install docker 启动 Docker 服务 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: 1.[root@localhost ~]# service docker start 2.[root@localhost ~]# chkconfig docker on (LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下: 1.[root@localhost ~]# systemctl start docker.service 2.[root@localhost ~]# systemctl enable docker.service )

2017-12-21

快速安装caffe步骤

1.百度云获取caffe镜像 链接:http://pan.baidu.com/s/1o8NNlOm 密码:9a5x 2.解压 3.将这个压缩包传到linux里面 (我的环境如下: 我在win7虚拟机里面装的linux,用xshell用具链接linux,xftp实现win7和linux文件的传输。 3 可以使用 docker import 从容器快照文件中再导入为镜像,例如 cat ubuntu_caffe.tar | sudo docker import - test/ubuntu_caffe:v1.0 docker images 4建一个 Docker 实例: docker run -i -t test/ubuntu_caffe:v1.0 /bin/bash 5 执行训练: cd ~ cd caffe ./examples/mnist/train_lenet.sh 比较慢,多等一会儿!!! PS:centos7安装docker(其他版本安装centos自行百度) CentOS 7 中 Docker 的安装 Docker 软件包已经包括在默认的 CentOS-Extras 软件源里。因此想要安装 docker,只需要运行下面的 yum 命令: 1.[root@localhost ~]# yum install docker 启动 Docker 服务 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: 1.[root@localhost ~]# service docker start 2.[root@localhost ~]# chkconfig docker on (LCTT 译注:此处采用了旧式的 sysv 语法,如采用CentOS 7中支持的新式 systemd 语法,如下: 1.[root@localhost ~]# systemctl start docker.service 2.[root@localhost ~]# systemctl enable docker.service )

2017-12-21

EM抛硬币算法

Excel来解释公式,简单容易理解 这是一个抛硬币的例子,H表示正面向上,T表示反面向上,参数θ表示正面朝上的概率。硬币有两个,A和B,硬币是有偏的。本次实验总共做了5组,每组随机选一个硬币,连续抛10次。如果知道每次抛的是哪个硬币,那么计算参数θ就非常简单了,如上图所示。 如果不知道每次抛的是哪个硬币呢?那么,我们就需要用EM算法,基本步骤为:1、给θA和θB一个初始值;2、(E-step)估计每组实验是硬币A的概率(本组实验是硬币B的概率=1-本组实验是硬币A的概率)。分别计算每组实验中,选择A硬币且正面朝上次数的期望值,选择B硬币且正面朝上次数的期望值;3、(M-step)利用第三步求得的期望值重新计算θA和θB;4、当迭代到一定次数,或者算法收敛到一定精度,结束算法,否则,回到第2步。

2017-12-20

ID3 算法 决策树使用的算法与阿里巴巴Java开发手册(终极版)

ID3 算法 决策树使用的算法与阿里巴巴Java开发手册(终极版) ID3 算法 决策树使用的算法与阿里巴巴Java开发手册(终极版) ID3 算法 决策树使用的算法与阿里巴巴Java开发手册(终极版) ID3 算法 决策树使用的算法与阿里巴巴Java开发手册(终极版)

2017-12-15

Netica贝叶斯

贝叶斯NeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNeticaNetica

2017-12-14

Mysql安装Linux

一、卸载原来的mysql: 卸载一: 输入: #rpm -qa | grep -i mysql 显示: mysql-libs-5.1.52-1.el6_0.1.i686 卸载方法: yum -y remove mysql-libs-5.1.52-1.el6_0.1.i686 卸载二: 输入: #rpm -qa | grep -i mysql 显示: MySQL-client-5.1.62-1. glibc23.i386 MySQL-server-5.1.62-1.glibc23.i386 卸载方法: #rpm -ev MySQL-client-5.1.62-1.glibc23.i386 MySQL-server-5.1.62-1.glibc23.i386 二、安装MySQL服务器端: 安装文件:MySQL-server-5.1.62-1.glibc23.i386.rpm # rpm -ivh /software/mysql/MySQL-server-5.1.62-1.glibc23.i386.rpm 这是在/usr/share/mysql 目录下生成一些 文件,其中有一个文件名为:my-medium.cnf 将其拷贝到/etc/my.cnf中 # cp /usr/share/mysql/my-medium.cnf /etc/my.cnf 现在就安装完了,可以看看他运行的进程: # ps -ef | grep mysql 三、安装MySQL客户端: # rpm -ivh /software/mysql/MySQL-client-5.1.62-1.glibc23.i386.rpm 现在就安装客户端成功了,可以看看关于MySQL一些文件: # ls /usr/bin/mysql* 四、登录mysql: 刚开始装上mysql时是没有密码的,输入: # mysql 就可登录到mysql数据库上了。 五、设置MySQL密码: # mysqladmin -u root password 123456 这样就将mysql中用户名为root密码设为123456 六、登录设置有密码的mysql: 命令和dos下登录mysql是一样的: # mysql -uroot -p123456 或者 # mysql -uroot -p[回车] 再输入密码

2017-12-13

docker离线安装 linux

docker1.8 要求内核3.10起,但是redhat7.1内核是”2.6.32-431.el6.x86_64”奔溃,又不能升级内核,还不能联网。。。怎么办呢? 只好去网上下了docker1.7的rpm包手动安装吧,经过多次实验发现,1. 所需包如下: lxc-libs-1.0.9-1.el6.x86_64.rpm lua-alt-getopt-0.7.0-1.el6.noarch.rpm lua-filesystem-1.4.2-1.el6.x86_64.rpm lua-lxc-1.0.9-1.el6.x86_64.rpm lxc-1.0.9-1.el6.x86_64.rpm docker-io-1.7.1-2.el6.x86_64.rpm device-mapper-libs-1.02.117-12.el6.i686.rpm device-mapper-libs-1.02.117-12.el6.x86_64.rpm 1 2 3 4 5 6 7 8 9 好啦不要看了资源在这里下载:docker1.7.0 rpm包 直接安装device-mapper 的包会报依赖错误,解决方法就是不管他,直接忽略依赖安装。 所需执行命令如下: rpm -ivh lxc-libs-1.0.9-1.el6.x86_64.rpm rpm -ivh lua-alt-getopt-0.7.0-1.el6.noarch.rpm rpm -ivh lua-filesystem-1.4.2-1.el6.x86_64.rpm rpm -ivh lua-lxc-1.0.9-1.el6.x86_64.rpm rpm -ivh lxc-1.0.9-1.el6.x86_64.rpm rpm -ivh docker-io-1.7.1-2.el6.x86_64.rpm rpm -ivh device-mapper-libs-1.02.117-12.el6.i686.rpm --force --nodeps rpm -ivh device-mapper-libs-1.02.117-12.el6.x86_64.rpm --force --nodeps 1 2 3 4 5 6 7 8 9 10 rpm 安装完毕 后启动docker service docker start(用来生成cgroup隔离环境,好像不执行也可以。我没有测试,如果有朋友测试了麻烦给个评论。) docker -d & 1 2 然后检查是否安装成功 docker ps

2017-12-08

空空如也

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

TA关注的人

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