自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ZEEKLING

博客已经迁移到新地址: https://www.zeekling.cn,欢迎访问.

  • 博客(43)
  • 资源 (3)
  • 收藏
  • 关注

转载 Flink Checkpoint/Savepoint对比

Savepoint 是一种特殊的 Checkpoint,实际上它们的存储格式也是一致的,它们主要的不同在于定位。Checkpoint 是为 Flink runtime 准备的,Savepoint 是为 Flink 用户准备的。因为 Checkpoint 是秒级频繁触发的,两个连续 Checkpoint 通常高度相似,因此对于 State 特别大的作业来说,每次 Checkpoint 只增量地补充 diff 可以大大地节约成本,这就是 incremental Checkpoint 的由来。

2023-09-17 20:35:41 99

转载 java 17运行jar报错:java.lang.UnsatisfiedLinkError: Can‘t load library:

于是重新安装了下openjdk17。发现jar包也能正常运行了。此时发现这个文件存在了。

2023-09-17 20:32:35 1217

原创 Redis 6.0新特性----TLS 通道加密

Redis 6实现了通道加密,提高了redis的安全性。Redis作为缓存数据库,里面很有可能缓存重要的敏感信息,所以支持tls通道加密还是很有必要的,当然敏感信息还是建议加密保存。创建证书mkdir -p tests/tlsopenssl genrsa -out tests/tls/ca.key 2048openssl req \ -x509 -new -nodes -sha256 \ -key tests/tls/ca.key \ -days 3650 \ -su

2021-08-14 16:26:16 2284

原创 C语言命令行参数和java的区别

区别主要区别在与args[0]的值,在C语言当中args[0]是C语言编译出的当前二进制的名称,而在Java当中却是第一个参数的值。代码演示C语言代码如下:#include <stdio.h>int main(int argc, char *argv[]){ printf("argc=%d, argv=%s", argc, argv[0]); return 0;}使用 gcc args_test.c编译上面代码并且执行结果如下:Java代码如下:package

2021-05-23 17:53:45 168

原创 idea卡顿且报错:UI was frozen for xxxxx ms问题解决

idea 启动并且点击某个菜单之后一点反应也没有,点击关闭也关闭不掉,查看日志报错提示UI was frozen for 12256ms。

2021-04-30 19:13:53 1974 6

翻译 Redis 6.0新特性----RESP3协议

RESP3协议概述RESP3是RESP v2的更新版本,RESP v2是Redis中使用的协议,大约从版本2.0开始(1.2已经支持它,但是Redis 2.0是第一个只讨论这个协议的版本)。此协议的名称只是RESP3,而不是respv3或RESP3.0。该协议用于处理客户机和服务器之间的请求-响应通信,其中客户机执行某种请求,服务器用一些数据进行回复。该协议特别适合于数据库,因为它能够返回复杂的数据类型和相关的信息来扩充返回的数据(例如给定信息的流行度指数)。RESP3协议可以不对称地使用,就像在Re

2021-02-28 18:03:56 1656

翻译 Redis 6 客户端缓存

Redis服务器辅助的客户端缓存客户端缓存是一种用于创建高性能服务的技术。它利用应用服务器中的可用内存,这些服务器通常是与数据库节点不同的计算机,以便将数据库信息的某些子集直接存储在应用程序端。通常当需要一些数据时,应用服务器会向数据库询问这些信息,如下图所示:+-------------+ +----------+| | ------- GET user:1234 -------> | |

2021-02-28 14:26:08 420

原创 【Redis源码】Redis 6 ACL源码详解

简介本文主要是讲解Redis 6的ACL的实现原理。基本使用详见:Redis 6.0新特性——ACLs,以及Redis启动过程分析。启动初始化初始化默认用户ACL子模块在Redis启动过程中初始化,下面代码主要是初始化ACL的结构:/* * 初始化ACL子系统 * */void ACLInit(void) { Users = raxNew(); // 初始化用户信息 UsersToLoad = listCreate(); ACLLog = listCreate();

2020-11-24 00:54:13 406

原创 Redis 6.0新特性——ACLs

简介Redis在6版本之前是没有权限的概念的,所以所有连接的客户端都可以对Redis里面的数据进行操作,也可以使用所有高危命令,这样就可能存在Redis直接down掉或者数据被全部清空的情况。当执行flushall 或者flashdb的时候会清空掉数据库里面的所有数据。当执行DEBUG SEGFAULT的时候Redis进程会直接down掉。如下图所示:在Redis 5以及之前的版本为了避免这种情况的出现,可以使用 rename-command将高危命令禁用掉。rename-command KE

2020-11-22 21:12:50 268 2

转载 Redis命令执行过程

简介需要了解Redis命令执行过程,请先了解Redis启动过程和Redis事件监听。Redis启动过程分析Redis事件监听在Redis事件监听中我们了解到在创建文件监听事件的时候acceptTcpHandler就是的执行函数。具体实现如下:for (j = 0; j < server.ipfd_count; j++) { if (aeCreateFileEvent(server.el, server.ipfd[j], AE_READABLE, acceptTcpHandle.

2020-10-10 22:15:13 2359

转载 【Redis源码阅读】Redis 启动过程分析

简介由于本人目前是华为FusionInsight HD 中Redis组件的Owner,所以要对Redis进行深入的了解,这对于C语言水平不咋地的我来讲还是有点难度的,于是我决定先从Redis的启动开始看,了解其基本原理。配置初始化Redis服务启动首先做的第一步就是初始化配置。Redis初始化配置主要包括初始化命令表和加载配置两部分。初始化命令表在函数populateCommandTable将redisCommandTable中的命令加载到字典server.commands当中,用于执行命令的时.

2020-10-07 22:00:30 213

原创 gitea 使用jenkins 自动ci

简介我目前使用的代码仓库是使用gitea搭建而成的,详细参见https://git.zeekling.cn, 最近在看redis源码于是就想着加个自动ci的东西。安装jenkins执行下面脚本安装jenkinsdocker pull jenkins/jenkinsdocker stop jenkinsdocker rm jenkinsdocker run -d -t \ -p 8888:8080 \ -p 50000:50000 \ -v /d.

2020-10-07 21:46:57 1315

转载 【Redis源码阅读】Redis事件监听

简介Redis服务器是典型的事件驱动程序,而事件又分为文件事件(socket的可读可写事件)与时间事件(定时任务)两大类。无论是文件事件还是时间事件都封装在结构体aeEventLoop中:typedef struct aeEventLoop { int maxfd; /* highest file descriptor currently registered */ int setsize; /* max number of file descriptors tracked */.

2020-10-07 21:31:56 307

转载 kali rolling 跟新后连不上wifi修复

简介本人使用kali linux也有五六年了吧,就在昨晚执行了下面升级命令之后就发生了惨案:重启电脑之后上不了无线网。sudo apt upgrade --fix-missing我的电脑比较老,网卡还是BCM43142类型的于是就开始找原因。原因分析执行命令查看linux内核版本zeek@kali  ~  uname -r5.8.0-kali1-amd64鉴于这个网卡驱动依赖linux头文件,于是查看系统中linux头文件,执行命令:sudo dpkg -l | grep lin.

2020-10-06 21:53:38 431

原创 docker镜像安装oracle

简介在debian中安装docker,并且在docker环境下使用oracle。docker安装在https://docs.docker.com/engine/installation/#desktop或者去https://download.docker.com/linux/static/stable网址里面下载,下载完了解压到/usr/bin/下面(或者解压到其他地方,然后将解压路径添加...

2019-04-27 20:13:39 1265

原创 混合编码网络

混合编码网络https://blog.csdn.net/u013567842/article/details/57190362 本文提出了一种端到端的学习模型,称为混合编码网络(HCNs)解决这些问题。除了学习RNN,HCNs也允许开发者表示领域知识通过软件和操作...

2019-04-22 23:47:05 622

原创 kali rolling linux 安装BCM43142网卡驱动

前言玩linux已经有半年多的时间了,在这半年时间里,我的linux系统重装了已经不下于十次了吧。最近心血来潮,玩了一把kali linux (大学霸),除了无线网卡驱动没有之外,其他的都很满意,比之前用的ubuntu系列的好多了。我知道有好多人都在用ubuntu系统,主要是因为这个系统用的人多,社区力量比较大,你能遇到的问题别人都已经遇到过了,在网上都可以找到很多关于ubuntu这个系统出问题之后

2016-08-19 14:53:39 9059 6

原创 解读tomcat源码之tomcat的启动过程

解读tomcat源码之tomcat的启动过程前言tomcat 我们经常用到,但是有时候我们却感到对他无比陌生,出了错都不知道是什么原因引起的。这个就比较尴尬,不过好在tomcat是开源免费的,我们可以看到其源码,那么问题就简单了,我们看看源码什么迷惑就没有了。最近对于tomcat有诸多不解,故看看源码来解惑,理解可能有些偏差,还请大神不吝赐教,小子在此谢过。启动过程我们都应该知道tomcat是通过类

2016-07-31 22:00:33 518

翻译 java垃圾收集器之G1收集器

G1收集器G1收集器是面向服务端应用的垃圾收集器。G1收集器在未来可能替换掉CMS收集器。G1收集器的特点:并行与并发:G1能充分利用多CPU、多核环境下的硬件优势、使用多个CPU来缩短stop the world 停顿时间,部分其他收集器原本需要停顿java线程执行的GC动作,G1收集器仍然可以通过并发的方式让java程序继续执行。分代收集:空间整合:与CMS的“标记-清理”算法不同,G1从

2016-06-29 09:17:13 745

翻译 java虚拟机收集器之老年代收集器

java虚拟机收集器之老年代收集器Serial Old收集器Serial Old收集器是Serial收集器的老年代版本,同样是一个单线程收集器,使用“标记-整理”算法。这个收集器的主要意义也是在于Client模式下的虚拟机使用。 主要用途: 1、一种用途是在JDK1.5以及之前的版本与Parallel Scavenge收集器搭配使用。 2、另一种用途就是作为CMS收集器的后备预案,在并发收集发

2016-06-28 11:35:05 2029 1

翻译 java虚拟机的垃圾收集器之新生代收集器

hotspot虚拟机的收集器hotspot垃圾收集器主要有七种:如图所示: 图中上面部分是新生代的垃圾收集器,下面部分表示老年代的垃圾收集器,两个垃圾收集器的之间的连线表示两个收集器搭配使用。serial收集器serial收集器是最基本发展最悠久的收集器。serial收集器是一个单线程的收集器,但他的“单线程”的意义并不仅仅只会使用一个cpu或者一条线程去完成垃圾收集工作,更重要的是在他进行垃

2016-06-28 10:25:56 1516

翻译 垃圾回收算法

垃圾收集算法标记-清除算法最基础的收集算法是”标记-清除”(Mark-Sweep)算法,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。标记-清除算法主要有两个不足:一个是效率问题,标记和清除两个过程的效率,另一个是空间问题,标记清除之后会产生大量不连续的内存碎片,空间kongjian碎片太多可能会导致以后在程序运行过程中需要分配较大对象时,无

2016-06-25 10:32:03 513

翻译 java对象的访问

java对象的访问我们都知道一般访问和操作对象都是通过引用来操作和访问对象。目前对象的访问方式有句柄和直接指针:1、如果使用句柄访问的话,那么java堆中将会划分出一块内存作为句柄池,reference中存储的就是对象的句柄地址,而句柄中包含了对象的实例数据与类型数据各自的具体地址信息。 2、如果使用直接指针访问,那么java堆对象的布局就必须考虑如何放置访问类型数据的相关信息,而refer

2016-06-24 16:15:07 843

翻译 java内存模型的理解

java内存模型java虚拟机在执行java程序时会把内存分为不同的数据区: 上图中蓝色的两块区域是所有线程共享的数据区,即方法区和堆是所有线程共享的。而剩下的三块区域:虚拟机栈、本地方法栈、程序计数器。java虚拟机栈我们经常可以听到有人把java内存分为堆内存和栈内存,其中栈就是虚拟机栈,局部变量表存放了编译器可知的各种基本数据类型(boolean、byte、char、short、int、

2016-06-22 21:33:47 427

原创 谈谈我对类加载器的理解

谈谈我对类加载器的理解最近在看java虚拟机和tomcat源码,看到了类加载器这块儿,有点感触,随便写写。在说类加载器之前,我们先聊聊虚拟机的加载机制:1、一个类的生命周期:加载、链接、初始化、使用、卸载。链接又可以分为验证、准备、解析三个过程。 其中加载、验证、准备、初始化、使用、卸载是按顺序执行的,注意没有解析这一步。在加载阶段,虚拟机完成三件事: 1)通过一个类的全限定名类获取定义

2016-06-20 15:38:52 1753

转载 用idea查看tomcat源码

最近在自己写一个简易版tomcat时,遇到了一些问题,想不明白,所以打算看看源码在写,我们平时用的是idea,在把tomcat7源码导入到idea中时遇到了很多问题,使我对idea又熟悉了不少。下面是我操作的步奏: 1、tomcat源码可以在官网上下载,我的是在官网上下载的,本以为可以下载到tomcat8的源码,结果下载下来不是,不过也没有关系,主要是用来学习的原理的,不是最新的没多大关系;下载下

2016-05-09 14:15:18 5956

翻译 ubuntu15.10 3D桌面

首先我想说的是我近期使用linux的一些感触,我使用的linux发行版是ubuntu15.10。以前感觉windows用起来还不错,自从用了linux之后感觉windows太人性化了,但是在linux系统上可以学到很多东西,这是windows系统不能满足的。 linux的好处就是可以根据自己的喜好设置自己喜欢的主题,比windows炫酷多了,如果你会认为这会占很多内存就错了,linux的垃圾回收远

2016-04-13 21:50:01 2041 1

原创 idea编译时报java.lang.OutOfMemoryError: Java heap space异常

今天在写程序时遇到idea编译报java.lang.OutOfMemoryError: Java heap space异常,原来是程序运行需要的内存太大,而idea提供的内存不够用导致的,所以我们只要调大idea提供内存即可如图 找到上图所示的位置,调成2048即可

2016-03-31 19:05:29 25689 1

翻译 ubuntu14.04关机卡死解决方案

最近重装了ubuntu14.04系统,第二天发现电脑关机时卡死,在网上找了找,最后解决了问题: 首先打开终端,输入:sudo vim /etc/modules在文件最后添加apm power_off=1如图 找到inux --class gnu --class os { recordfail gfxmode $linux_gfx_mode in

2016-03-28 20:46:21 26109 1

翻译 dijkstra 算法的java实现

迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的集合(初始时只含有源点V0) (2)V-S=T:尚未确定的顶点集合 将T中顶点按递增的次序加入到S中,保证: (1)从源点V0到S中其他各顶点的长度都不大于从V0到T中任何顶点的最短路径长度 (2)每个顶点对应一个距离值 S中顶点:从

2016-03-21 22:25:57 887

翻译 并归排序算法java实现

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 设r[i…n]由两个有序子表r[i…m]和r[m+1…n]组成,两个子表长度分别为n-i +1、n-m。 1、j=m+1;k=i;i=i; //置两个子表的起始下标及辅助数组的起始下标 2、若i>m 或j>n,转⑷ //其中一个子

2016-03-10 12:53:18 772

翻译 快速排序

选择一个基准元素,通常选择第一个元素或者最后一个元素,通过一趟排序讲待排序的记录分割成独立的两部分,其中一部分记录的元素值均比基准元素值小。另一部分记录的 元素值比基准值大。此时基准元素在其排好序后的正确位置。然后分别对这两部分记录用同样的方法继续进行排序,直到整个序列有序。 快速排序代码:package QuckSort;/** * Created by root on 3/9/16. */

2016-03-10 12:47:54 405

翻译 排序算法之冒泡排序

在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 冒泡排序代码:package BubbleSort;/** * Created by root on 3/8/16. */public class BubbleSort<T extends Co

2016-03-08 23:59:04 315

原创 选择排序之简单选择排序(java实现)

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。 实现代码:package SelectionSort;/** * Created by root on 3/7/16. */public class SimpleSelection

2016-03-07 21:57:13 403

翻译 排序算法之希尔排序(java实现)

先将要排序的一组记录按某个增量d(n/2,n为要排序数的个数)分成若干组子序列,每组中记录的下标相差d.对每组中全部元素进行直接插入排序,然后再用一个较小的增量(d/2)对它进行分组,在每组中再进行直接插入排序。继续不断缩小增量直至为1,最后使用直接插入排序完成排序。 java实现:package InsertionSort;/** * Created by root on 3/7/16. *

2016-03-07 21:12:41 459

翻译 java实现单链表

单链表的概念参照这个完全可以理解http://baike.baidu.com/link?url=-1uzZ37pcZwpN-1Zy2lCassJ2YqPQzjIPbQHdPXCwo0pGR5-sXiEY8kXNUjt2DubG_8JTSQBJrhTF182Kwo5Wq下面是我的程序:新建一个名为Node的类,data是数据域,而next是指针域package singleLinkedL

2016-03-01 20:04:50 469

翻译 ubuntu14.4下载软件仓库失败

今天在linux 上执行命令行sudo apt-get update时出现了以下的错误信息:Packages Please use apt-cdrom to make this CD-ROM recognized by APT. apt-get update cannot be used to add new CD-ROMs, W:Failed to fetc...

2016-02-29 19:00:48 10475 1

原创 求水仙花数的算法

自己用递归写了一个求水仙花数的算法。貌似性能不是特别好。就当举个反面例子好了,这是我的代码: `package aTest1;/** * Created by 令照辉 on 1/24/2016. * * 求水仙花数 * */ public class Test01 {private int get(int num){ if(num < 10){ r

2016-01-25 09:45:41 2267

原创 Super和this的应用

Super是指当前类的父类,this指的是当前对象。看下面的例子:package test1;/** * Created by lzh on 1/19/2016. */public class Father { private String name = "origin name"; public Father(){ say(name);

2016-01-19 20:10:29 497

原创 keySet和entrySet速度区别

1、keySet()的速度比entrySet()慢了很多,也就是keySet方式遍历Map的性能不如entrySet性能好为了提高性能,以后多考虑用entrySet()方式来进行遍历。对于keySet来讲,他便利了两次,一次转为Iterator类型,一次成HashMap中取出key对应的value值,二entrySet只遍历了一次,他将key和value全部放入entry中。      2、k

2016-01-16 21:49:52 2610

内存相关论文

2017-01-06

jd-gui_1.4.0-0_all.deb

java反编译工具

2016-04-09

Git-1.9.2-preview20140411

Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

2015-11-21

空空如也

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

TA关注的人

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