自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

WeiJiFeng_的博客

记录渣渣技术的泪水

  • 博客(67)
  • 收藏
  • 关注

原创 GO docker化编译平台现象不一致问题

go编译在动态链接上,不同平台执行结果不一致现象

2022-10-27 13:30:18 385 1

原创 docker安装zookeeper和kafka

docker search zookeeperdocker search kafkadocker pull wurstmeister/zookeeperdocker pull wurstmeister/kafkazookeeper启动命令docker run -d -p 2181:2181 --name zookeeper wurstmeister/zookeeper:latest启动后可以通过docker logs kafka命令查看启动的状态kafka启动命令link模式连zooke

2020-09-26 17:45:30 1035 1

原创 ConcurrentHashMap1.8源码和同步机制

1. ConcurrentHashMap几个重要概念2. ConcurrentHashMap的get操作详解3. ConcurrentHashMap的插入操作详解4. ConcurrentHashMap的链表转红黑树5. ConcurrentHashMap的扩容操作详解6. ConcurrentHashMap的同步机制详解首先谈默认参数:MAXIMUM_CAPACITY = 1 << 30 最大元素容量DEFAULT_CAPACITY = 16 默认初

2020-09-22 14:37:15 439

原创 SpringBoot 2.x 整合redis

Spring boot 2.x 默认整合redis客户端为lettuce。Lettuce 和 Jedis 的都是连接Redis Server的客户端程序。Jedis在实现上是直连redis server,多线程环境下非线程安全,除非使用连接池,为每个Jedis实例增加物理连接。Lettuce基于Netty的连接实例(StatefulRedisConnection),可以在多个线程间并发访问,且线程...

2019-09-23 20:47:52 429 2

原创 Maven安装与命令详细介绍

目录  1 .安装Maven  2 .命令集合  3 .参数集合1,安装Maven官网下载对应的安装包:https://maven.apache.org/download.cgiwindows安装:1,解压安装包2,添加环境变量3,验证安装是否成功4,修改maven setting.xml liunx安装:1.解压tar -zxvf xxx.tar.gz2,...

2019-09-21 16:39:32 659

原创 FastJson的使用——复杂的JSON获取指定的key-value,JSON与list,object的互转

对象转

2018-11-15 17:26:55 20019 1

原创 Java堆——Tlab分析,介绍

首先谈java对象的创建我们在语言层面上,创建一个对象仅仅是一个new关键字可以解决的。但是在JVM层面上是怎么创建一个对象的呢??当 jvm 遇到 new 指令 1,检查指令的参数能否在常量池中定位到一个类的符号引用。并检查这个符号引用所代表的类是否已经被加载,解析,初始化过。 2,没有,就进行相应的类加载。 3,类加载完成后就知道对象所需内存大小,为对象进行内存空间分配,在将...

2018-08-25 19:03:43 1476

原创 通过Condition实现wait与指定线程notify

  Object 的 wait / notify / notifyAll 几个方法可以实现对线程的挂起和唤醒。ReentrantLock 也可以,不过要借助我们的 Condition 条件监视器,而且 Object 唤醒部分县城是随机唤醒,Condition 使得线程唤醒是可控的,可以指定唤醒部分线程。 首先我们用 ReentrantLock 和 Condition 实现 Object 中对应的...

2018-08-15 19:41:32 1358

原创 通过demo对比了解Volatile的实现

Volatile的定义  volatile可以保证线程可见性且提供了一定的有序性,但是无法保证原子性。在JVM底层volatile是采用“内存屏障”来实现的。  上面的定义有两层含义:   1,保证共享变量的可见性,但无法保证原子性   2,防止指令重排Volatile的可见性  一个变量如果用volatile修饰了,则Java可以确保所有线...

2018-08-15 14:32:28 1042

原创 调用wait,notify,sleep方法对锁资源的处理

  我们知道wait和sleep方法可以将一个线程阻塞的目的。wait是将线程从Running变为waiting,直到被notify或者notifyAll,才会将线程从waiting状态变成Runnable状态。sleep是在一段时间内将线程从Running变为waiting,时间过去之后,线程进入Runnable状态。     在状态转换的时候,锁资源发生什么变化呢?首先我们用一个dem...

2018-08-14 19:22:43 652

原创 ReentrantReadWriteLock源码分析,java8

一,关系简介二, 实现  2.1 Sync的成员变量   2.2 构造器   2.3 lock()   2.4 ReadLock.lock()流程图关系简介  在这个关系很乱的UML图中,我们可以发现ReentrantReadWriteLock实现了ReadWriteLock接口,内部类有Sync(锁的实现),NonfairSync,FairSync公平锁与非公平锁,Wr...

2018-08-14 14:54:28 288

原创 创建一个自己的数据库连接池

思路1,我的思想是,用一个链表对JDBC连接线程进行保存。这个链表中保存在执行的连接,当一个连接调用close方法的时候,也就证明此连接线程的生命正在走向终结,就将这个连接通过反射代理回收。在添加新的连接线程。 2,我们往线程池中获取连接的时候,getConnection就OK了。话不多说,直接上代码,对于反射和代理有过了解的,一看代码就明白,写的一个很简陋的连接池。 配置信息...

2018-08-10 21:44:35 1280 1

原创 聚簇索引和非聚簇索引的区别

引言  聚簇索引并不是一种索引类型,只是一种存储方式。当表有了聚簇索引的时候,表的数据行都存放在索引树的叶子页中。无法把数据行放到两个不同的地方,所以一张表只允许有一个聚簇索引。   索引使得大多数时候我们避免全表扫描,使数据的性能有一定的提高。而聚簇索引的影响力也是很大的。我们熟悉的Myisam和innodb两大引擎,innodb的默认数据结构是聚簇索引,而Myisam是非聚簇索引。  ...

2018-08-09 17:50:29 3835

原创 解读可重入锁——ReentrantLock&AQS,java8

1 , ReentrantLock简介  首先我们可以查看ReentrantLock类,实现了Lock接口,其内部类都直接或者间接的继承了AQS类,则AQS肯定与ReentrantLock关系密切 我们来个demo,让大家更直接的了解重入锁: 2, 构造器MyReentrantLock是为了写自己理解的注释,改了一下类名 /** * Reen...

2018-08-03 21:31:07 878

原创 java十六进制转为byte类型

借用Integer类型转换byte c = Integer.valueOf("ca",16).byteValue();byte c = (byte) Integer.parseInt("ca", 16);直接强转byte b = (byte)0xca;

2018-07-24 18:17:47 2040

原创 配置SpringMVC拦截器实现用户权限认证

实现HandleInterceptor接口public class AuthorizedInterceptor implements HandlerInterceptor { /** 定义不需要拦截的请求 */ private static final String[] IGNORE_URI = {&quot;/login&quot;,&quot;index.html&quot;}; /** ...

2018-07-13 15:53:24 1248

原创 SpringMVC拦截器介绍

前言拦截器是SpringMVC非常重要的一个功能

2018-07-13 15:46:12 323

原创 Web项目中使用log4j,指定日志输出文件

  使用log4j在web项目中,需要打印日志到文件中。使用相对路径,默认的是相对于tomcat的bin目录下。顿时觉得很坑。寻找解决到相对于项目之下,踩了很多坑。最后决定自己实现配置加载处理,就不会出现什么问题。  使用servlet加载log4j配置,log4j只在项目启动加载一次,所以给servlet加load-on-startup为1就行我的log4j配置文件log4j.roo...

2018-07-12 19:34:58 2916

原创 Single Thread Execution 模式

概念Single Thread Execution 模式:就是在多线程执行时,对于共享资源的操作,当一个线程获取到共享资源的锁,并且没有释放锁的时候。其他线程无法使用共享资源。如果违背了这些原则,则会陷入死锁: - 具有多个锁参与其中 - 线程锁定一个锁没解除就去获得其他锁 - 线程获取这些锁的顺序不同但是只要打破其中一个就会避免死锁 共享资源Gate类...

2018-06-08 09:00:29 416

原创 Redis实现——链表

前言链表在Redis中的应用十分广泛,list底层实现采用的就是链表。还有发布与订阅,监视器等底层也是用到了链表。 实现Redis的链表是一种双端链表,在adlist.c和adlist.h实现 链表节点typedef struct listNode { // 前置节点 struct listNode *prev; // 后置节点 ...

2018-06-08 08:51:19 1021

原创 Redis实现——String类型(sds)

前言Redis底层是使用C语言实现的,对于字符串类型,其做出了改进,是一种基于动态字符串sds实现,redis作为数据库,查询必然多,修改也会有一定多,sds解决了C语言字符串动态扩展的不方便,以及查询长度操作从O(n)变为了O(1)。 sds相比C语言原始字符串最大优势在于空间预分配,惰性空间释放,性能得到很大提高 定义设计redis实现sds相关的redis源码文件...

2018-06-07 22:00:57 1718

原创 liunx(ping: unknown host)解决

可能是因为DNS设置问题。打开/etc/resolv.conf文件设置本地域名为: nameserver后面为域名,我是设置为百度的,备用域名为谷歌的domain localdomainsearch localdomainnameserver 180.76.76.76nameserver 8.8.8.8...

2018-05-13 15:42:29 584

原创 二叉搜索树(java实现)

目录   1 .插入元素思想与实现   2 .删除元素思想与实现   3 .完整代码 二叉搜索树定义二叉搜索树,也称有序二叉树,排序二叉树,是指一棵空树或者具有下列性质的二叉树:若任意节点的左子树不空,则左子树上所有结点的值均小于它的根结点的值;若任意节点的右子树不空,则右子树上所有结点的值均大于它的根结点的值;任意节点的左、右子树也分别为二叉查找树。没有键值相等的...

2018-05-07 16:41:19 3161 2

原创 4个子线程计数,每个线程都计数25次

  要求主线程执行在子线程执行之后。 这个很好办,子线程都设为不是守护线程然后处理4个子线程我们可以让每个线程向如下static class MyThread { public static void start(int begin, int step){ Thread t = new Thread(()-&amp;gt;{ ...

2018-05-06 00:12:21 784

原创 Redis cluster集群发生(error)

(error) MOVED 14990 xxxxx:7003错误解决方法为 启动客户端加 -c参数

2018-04-28 15:39:59 669

原创 Jedis连接redis cluster集群

public static void main(String[] args) throws IOException{ Set&lt;HostAndPort&gt; jedisClusterNode = new HashSet&lt;HostAndPort&gt;(); jedisClusterNode.add(new HostAndPort("ip",7001));//添加对应机器的i...

2018-04-28 15:33:46 2494

原创 redis搭建高可用cluster集群

1 .在redis目录下新建文件夹mkdir cluster 2 .在cluster目录下创建机器节点目录,每个服务在不同的端口号运行的 我的配置了6个节点,分别执行端口号为7001~7006 3 .将配置文件redis.conf复制到各目录下cp redis.conf ../cluster/700x 4 .修改配置文件如果是单机操作,可以不注释...

2018-04-28 15:07:48 227

原创 安装gem与redis插件

插件下载地址:https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem 然后执行:gem install -l ./redis-3.2.1.gem很是心累,刚开始yum安装,发现ruby版本太低,不能下载插件,弄得我,把ruby和gem的yum安装全部删除了。全部源码安装,用了最新版本。yum卸载指令yum -y ...

2018-04-28 00:20:43 10033

原创 Rubygems安装

下载源码包源码下载地址 https://rubygems.org/pages/download 解压tar -zxvf rubygems-2.7.6.tgz转到目录下ruby setup.rb如果需要更新版本gem update

2018-04-28 00:13:29 5862

原创 Ruby安装

下载tar包Ruby源码包下载地址: http://www.ruby-lang.org/en/downloads/ 解压tar zxvf ruby-2.5.1.tar.gz转到解压目录依次执行./configure #检查包文件make &amp;&amp; make install #编译源码,底层是由c写的 检查ruby -v...

2018-04-28 00:07:05 1873

原创 Servlet转向和重定向的区别

转向:请求转发是指将请求再转发到其他地址,转发过程中使用的是同一个请求,转发的地址栏内容不变。重定向:是指由原请求地址重新定位到某个新地址,原有的请求失效,客户端看到的是新的请求返回的相应结果。举例说明吧:转发过程: 客户端对servlet1容器发起请求,但是servlet1想让servlet2进行一波客户端请求处理,于是就调用servlet协作让servlet2进行处理。 重定...

2018-04-26 00:38:58 1316

原创 JSP与servlet区别

JSP  JSP就是servlet(服务端小程序):实际上,JSP翻译得到的代码就是一个servlet,这说明,每个JSP页面实际上就是一个servlet。由于每个JSP都是一个servlet,所以,如果对servlet有所了解,并知道服务器如何处理servlet,这会很有帮助。由此我们可以认识另外一些同样适用于JSP的技术。 Servlet  Servlet(Java服...

2018-04-25 23:33:31 264

翻译 在JSP中使用JavaBean

导入java类&lt;%@page import="java类相对路径"%&gt; 实例化java类&lt;jsp:useBean id=“test” class=“java类相对路径” scope=“request”/&gt; &lt;jsp:useBean&gt;:用于初始化JavaBean,或者定位一个已经存在的JavaBean实例,并把实例的引用赋给一个变量...

2018-04-25 00:24:45 796

翻译 JSP内置对象分别作用和重要方法

  JSP为简化页面的开发提供了一些内部对象。这些内部对象不需要由JSP的编写者实例化,它们由容器(Tomcat context)实现和管理,在所有的JSP页面中都能使用内部对象。所有的内部对象只有对脚本或表达式有用,但在JSP声明中不可用。JSP里有以下内部对象:requestresponsepageContextoutsessionconfigpageexceptiona...

2018-04-24 23:52:01 427

原创 依赖注入3种方式(xml实现)

构造器注入构造器注入依赖于构造方法实现,而构造方法可以是有参和无参的比如有构造器为:public Test(String id,String name){ this.id = id ; this.name = name ;}xml配置可以为&lt;bean id = "test1" class = "相对项目的路径"&gt; &lt;!--...

2018-04-22 23:50:42 1440

原创 Spring IOC的自我理解和实现过程以及生命周期

目录   1 .IOC 概述   2 .IOC容器的设计   3 .Spring IOC容器的定义和初始化   4 .Beand的生命周期   5 .IOC总结 IOC 概述IOC(控制反转):也是一个发布Bean的容器控制反转是个很抽象的东西,那就得了解谁控制谁?谁被反转了?控制:传统Java SE程序设计,我们直接在对象内部通过new进行创建对象,是程序主动去创...

2018-04-22 00:48:53 1329

原创 配置git和在idea中配置github

首先得安装好git,相信安装一个软件应该是很简单的事情 1 .git的本地配置首先通过ssh rsa算法生成密钥ssh -keygen -t rsa -C "[email protected]" //自己注册github账户绑定的邮箱然后配置个人信息git config --global user.name "username" //这里是使用github的用户名git c...

2018-04-19 18:03:36 1284

原创 HashMap使用对象作为key实现

HashMap在使用可变对象作为key是一件很危险的事情我们开始一个简单的实例class People{ private String name; private int age; public People(){ } public People(String name, int age) { this.name = name;...

2018-04-19 17:25:59 13868 2

原创 HashMap之Put方法解读

HashMap底层是使用Entry对象数组存储的,而Entry是一个单项的链表或者是红黑树。 下面是对HashMap的put源码的解读 final V putVal(int hash, K key, V value, boolean onlyIfAbsent, boolean evict) { Node&lt;K,V&gt;[] tab...

2018-04-19 17:04:58 858

原创 创建HBase操作连接对象

通过Connection接口对Hbase数据库建立连接 private Connection connection; //建立一个表操作对象 Table table = connection.getTable(TableName.valueOf(tableName)); //建立一个数据库操作对象 Admin admin = connection.getAdmin();通过Con...

2018-04-18 21:41:57 981

空空如也

空空如也

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

TA关注的人

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