- 博客(74)
- 收藏
- 关注
原创 eventListener在bind(this)后无法用removeEventListener移除
eventListener在bind(this)后无法用removeEventListener移除
2022-12-26 15:53:44
703
原创 PBS作业调度系统
PBS作业调度系统PBS安装postgres数据库用户名&密码PBS使用遇到的问题连接dataservice失败PBS安装postgres数据库用户名&密码[root@mgmt server_priv]# pwd/var/spool/pbs/server_priv[root@mgmt server_priv]# cat db_user postgres[root@mgmt server_priv]# [root@zw-master server_priv]# pbs_ds_p
2021-06-16 10:57:38
2063
3
原创 rpm打印scripts
rpm打印scriptsrpm打印scriptsrpm打印scriptsrpm --scripts -qp **.rpm > ./1.txt可以将**.rpm 的spec文件中定义的安装过程内容打印出来,方便调试。
2021-01-21 16:47:30
401
原创 linux下samba的相关操作
linux下samba的相关操作添加用户到samba查看samba用户删除samba用户添加用户到samba[root@node01 ~]# (echo 'password';echo 'password')|smbpasswd -s -a w1Added user w1.批量添加SAMBA_FILE中的用户只samba。文件格式username passwordfunction setSmbPasswd{ cat $SAMBA_FILE | while read line d
2020-12-29 17:33:05
202
原创 git提交本地分支至远程分支
git提交本地分支至远程分支在实际开发中,我们一般是在本地创建一个新的分支用于开发,最后再提交到远程master上,防止主分支被污染。提交流程➜ gitcode git clone git@github.com:wz18567908/grpc-demo.git➜ grpc-demo git:(master) git checkout -b devSwitched to a new branch 'dev'➜ grpc-demo git:(dev) vim README.md ➜ grp
2020-09-21 10:58:58
353
原创 ThreadLocal详解
ThreadLocal本质上,ThreadLocal通过空间来换取时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就会操作改副本,从而完全规避了多线程的并发问题。 public T get() { // 获取到当前线程对象 Thread t = Thread.currentThread(); ThreadLocalMap map = getMap(t); if (map != null) { Thread
2020-07-30 14:12:59
186
原创 Java的Future模式
Future接口的作用Future表示异步计算的结果。 提供了一些方法来检查计算是否完成,等待其完成以及检索计算结果。 只有在计算完成时才可以使用get方法检索结果,必要时将其阻塞,直到准备就绪为止。 取消由cancel方法执行。 提供了其他方法来确定任务是正常完成还是被取消。 一旦计算完成,就不能取消计算。 如果出于可取消性的目的而使用Future而不提供可用的结果,则可以声明Future <?>形式的类型,并作为基础任务的结果返回null。Future接口提供的方法 // 取消任
2020-07-29 13:43:44
204
原创 CAS详解
CAS详解synchronized关键字与Lock等锁机制都是悲观锁:无论做何种操作,首先都需要上锁,接下来再去执行后续操作,从而确保了接下来所有的操作都是由当前线程来执行的。乐观锁:线程在操作之前不做任何预先的处理,而是直接去执行;当在最后执行变量更新的时候,当前线程需要有一种机制来确保当前被操作的变量是没有被其他线程修改的;CAS是乐观锁的一种极为重要的实现方式。CAS(Compare And Swap)比较与交换:这是一个不断循环的过程,一直到变量值被修改成功为止。CAS本身是由硬件指令来
2020-07-28 16:02:16
369
原创 CyclicBarrier使用场景
CyclicBarrier应用场景实现了若干个线程都到达了某一个具体的点,这些线程再同时开始执行。没有主次之分当所有线程都到达屏障之后,所有的线程开始执行
2020-07-28 13:32:58
1076
原创 CountDownLatch使用场景
CountDownLatch使用场景主程序等待所有子程序执行完成后再执行。若计数器的数量大于子线程的数量,即计数器没有减到0,则线程一直处于await状态。package com.learn.thread.countdown;import java.util.concurrent.CountDownLatch;import java.util.stream.IntStream;public class CountDownTest { public static void main(
2020-07-27 16:06:58
226
原创 Condition详解
Condition详解传统上,我们可以同个synchronized关键字 + wait + notify/notifyAll 来实现多个线程之间的协调与通信,整个过程都是由JVM来帮助我们实现的;开发者无需(也无法)了解底层的细节。从JDK 1.5开始,并发包提供了Lock,Condition(await与signal/signalAll)来实现多个线程之间的协调与通信,整个过程都是开发者来控制的,而且相比于传统方式,更加灵活,功能也更加强大。Condition newCondition()返回一个绑
2020-07-22 14:09:21
1885
原创 死锁与相关检测工具
死锁死锁、活锁与饿死死锁线程1等待线程2互斥持有的资源,而线程2也在等待线程1互斥持有的资源,两个线程都无法继续执行。活锁线程持续重试一个总是失败的操作,导致无法继续执行。饿死线程一直被调度器延迟访问其赖以执行的资源,也许是调度器先于低优先级的线程而执行高优先级的线程,同时总是会有一个高优先级的线程可以执行,饿死也叫做无限延迟。package com.learn.thread.deadlock;public class DeadLockTest { private Obje
2020-07-21 14:34:47
260
原创 synchronized关键字原理学习
synchronized关键字原理学习synchronized关键字原理详解如果一个对象有若干个synchronized方法,在某一时刻,只能有唯一的一个线程去进入到其中一个synchronized方法,其他的线程要去访问其他synchronized方法,也需要等待。 因为要尝试获取对象锁,当前对象只有一把锁。当一个类中有一个synchronized static方法时,线程进入这个方法时,获取到的锁不是当前对象的锁,而是当前对象对应class 的锁。package com.learn.thre
2020-07-17 15:00:49
266
原创 多线程wait()与notify()和notifyAll()方法的总结
多线程wait()与notify()和notifyAll()方法的总结wait和sleep的区别在调用wait方法时,线程必须持有调用对象的锁,当调用wait方法后,线程就会释放掉改对象的锁(monitor)。在调用wait方法时,线程必须持有调用对象的锁,当调用wait方法后,线程就会释放掉改对象的锁(monitor)。在调用Thread类的sleep方法时,线程是不会释放掉对象的锁的。wait()与notify()和notifyAll()方法的总结当调用wait时,首先需要确保
2020-07-16 15:49:57
526
原创 ldapsearch获取不到中文组织结构
解决ldapsearch获取不到中文组织结构的问题ldapsearch获取中文组织结构为加密过的字符串[wangzheng@wz-centos service]$ ldapsearch -LLL -x -h 172.16.219.1** -b "OU=People,DC=chess,DC=com" "(objectClass=posixAccount)" dn | grep -v "^$"d...
2020-04-28 15:48:40
851
原创 Linux 设备 eth0 似乎不存在, 初始化操作将被延迟
Linux 设备 eth0 似乎不存在, 初始化操作将被延迟[root@wz ~]# service network restart关闭环回接口: [确定]弹出环回接口: [确定]弹出界面 eth0: 设备 eth0...
2020-04-17 13:45:50
1853
5
原创 activemq消息发送与接收
activemq消息发送与接收activemq消息发送与接收activemq消息发送与接收pom.xml <dependencies> <!-- activemq 开始 --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>...
2019-08-16 14:46:48
743
原创 java实现远程登录RDP
java实现远程登录RDPjava实现远程登录RDPjava实现远程登录RDPpackage com.clustertech.cloud.gui.utils;import java.io.UnsupportedEncodingException;import java.nio.charset.Charset;import java.util.Formatter;import com...
2019-08-07 18:49:24
4051
6
原创 redis学习和使用
redis学习和使用连接redis数据库docker运行redis数据库并连接连接远程redis服务器redis默认数据库redis常用命令Redis 键(key)使用例子常用命令Redis 字符串(String)使用例子常用命令Redis 哈希(Hash)使用例子常用命令Redis 列表(List)使用例子常用命令Redis 哈希(Hash)使用例子常用命令Redis 哈希(Hash)使用例子常...
2019-07-22 13:27:56
191
原创 go modules学习
go modules学习go modules学习使用go module管理项目go modules学习使用go module管理项目[wangzheng@wangzheng-centos go-learn]$ pwd/home/wangzheng/go-learn[wangzheng@wangzheng-centos go-learn]$ export GOPATH=/home/wang...
2019-07-12 15:55:26
157
原创 golang实现反向代理
golang实现反向代理golang实现反向代理golang实现反向代理将前端传来的/dcv/:host/请求转发到https://" + host + ":8443package dcvproxyimport ( "net/http" "strings" "net" "net/http/httputil" "net/url" "crypto/tls" stdlog "lo...
2019-07-11 14:14:59
2083
原创 查询so库文件存在哪个rpm包
查询so库文件存在哪个rpm包查询so库文件存在哪个rpm包查询so库文件存在哪个rpm包[root@dcv2017 ~]# rpm -qf /usr/lib64/dcv/modules/libdcvnvenc.sonice-dcv-server-2017.4.6898-1.el7.x86_64...
2019-07-09 09:36:38
4116
原创 批量ssh登录
批量ssh登录问题场景还原问题分析解决方法使用for循环代表while使用while+ssh -n批量修改防火墙策略问题需要在修改多台机器的防火墙策略,使用ssh批量处理。但是在使用过程中遇到一个问题。ssh到第一个机器后就不再继续往下执行了。场景还原[root@manager test]# cat fhosts 192.168.0.42192.168.0.43[root@manag...
2019-06-28 13:56:40
7809
原创 使用iptables实现端口转发
使用iptables实现端口转发环境及目标使用iptables实现环境及目标环境机器manager1:192.168.0.41机器manager2:192.168.0.42web项目部署在manager1上,端口为8080。目标将192.168.0.42的80端口转发到192.168.0.41的8080端口,即访问http://192.168.0.42可以访问到http://192...
2019-06-27 17:28:27
1254
原创 go语言常用api使用
go语言常用api使用初衷常用api使用获取文件的父目录创建多层目录读取文件内容并存入切片使用gopkg.in/ini操作配置文件初衷初学go语言,项目开发中难免遇到简单的写法复杂化的问题,在同事的comments中成长。常用api使用获取文件的父目录filepath.Dir(file)创建多层目录if err := os.MkdirAll(filepath.Dir(file), ...
2019-06-27 15:49:48
2570
原创 go语言实现dcv端口转发
go语言实现dcv端口转发环境及目标代码实现环境及目标环境所有转发机器已经实现了端口和ip的转发。端口为默认端口。参考https://blog.youkuaiyun.com/wz122330/article/details/91980227代码实现package appimport ( "io/ioutil" "os" "os/exec" "path/filepath" "str...
2019-06-27 15:41:15
602
原创 ssh实现端口转发
ssh实现端口转发环境及目标使用ssh实现环境及目标环境机器manager1:192.168.0.41机器manager2:192.168.0.42web项目部署在manager1上,端口为8080。目标将192.168.0.42的80端口转发到192.168.0.41的8080端口,即访问http://192.168.0.42可以访问到http://192.168.0.41:80...
2019-06-14 15:50:53
1364
原创 shell定时清理数据表历史数据
shell定时清理数据表历史数据实现代码实现代码一天执行一次,直接拷贝到daily。[wangzheng@wangzheng-centos ~]$ cat archive_cron.sh #!/bin/bash# Unit of interval: daily, hourly, monthly, weekly, selfly.interval="daily"# If you wa...
2019-06-06 16:24:49
1408
原创 go定时清理数据表历史数据
go定时清理数据表历史数据实现代码测试结果实现代码package casimport ( "time" "clustertech.com/chess/ng/sysconf" "github.com/sirupsen/logrus")var ( // Identify log for sync_cas_job_clean goroutine ...
2019-06-05 14:46:28
1127
原创 go程序初识--实现排序算法
go程序初始--实现排序算法程序设计程序结构程序实现算法实现冒泡排序快速排序主程序构建程序执行结果程序设计目标:开发一个排序算法的比较程序,从命令行指定输入的数据文件和输出的数据文件,并指定对应的排序算法。该程序的用法如下:USAGE:sorter -i -o -a <qsort | bubblesort>程序结构[wangzheng@wangzheng-centos s...
2019-05-10 17:04:11
194
原创 redis学习和使用
redis学习和使用概述Redis的数据结构使用docker启动redis概述Redis是一个开源的,基于内存的数据结构存储,可用作于数据库、缓存、消息中间件。Redis是基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。我们可以发现这不就是Java的Map容器所拥有的特性吗,那为什么还需要Redis呢?Java实现的Map是本地缓存,如果有多台实...
2019-05-10 16:25:40
165
原创 gin+swagger+restful环境搭建
gin的使用可以参考官网安装ginhttps://github.com/gin-gonic/gin使用go mod,若遇到golang.org包无法下载的问题请参考:https://blog.youkuaiyun.com/wz122330/article/details/89493467使用go mod管理项目依赖包go mod init生成go.mod文件[wangzheng@wangzheng...
2019-04-25 10:24:49
5899
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人