linux下快速更改jenkins已忘记密码的账户(无须删除配置文件)

当时google的时候前篇一律的叫你删除配置文件。其实不用那么麻烦,可以精确到修改每个账户的密码。 要修改jenkins的账户信息,首先当然得先找到jenkins的位置,一般jenkins是通过web部署的。 1.快速定位jenkins的位置 ps -ef | grep jenkins ...

2019-08-23 11:23:43

阅读数 682

评论数 0

html2pdf使用总结

起源: 项目中用到使用html转pdf功能,将开发过程中,几个主要功能提炼出来,分享给大家并有github例子,clone下来配置好jdk就能直接跑例子,代码和逻辑也超简单,一看就能明白。 环境配置: jdk1.8.0_77 idea win10 htmlpdf版本如下 &...

2019-08-12 15:19:03

阅读数 6247

评论数 0

oss直接下载文件到客户端

前提需求:支持用户将oss端的文件进行下载使用。 1.最初分析,将oss端的文件下载到服务端 ==》再将服务端的文件提供用户下载 ==》用户下载完成后,删除服务端临时下载文件。 这样做第一、步骤复杂,加大了程序出错的概率。第二、效率低下,做了两次文件传输。 2.设想的最优方案,既然都是流的传...

2019-07-29 11:41:31

阅读数 11083

评论数 0

git+pylint实现python提交代码格式校验

快速搭建git+pylint;git+python代码控制

2019-07-12 17:42:56

阅读数 15477

评论数 0

python浅拷贝和深度拷贝

通过代码和结果来理解浅拷贝和深度拷贝,先来看看python中有那些常见的浅拷贝方法: 1.使用数据类型本身的构造器: l1 = [1,2,3] l2 = list(l1) l1 == l2 #True l1 is l2 #False #l2就是l1的浅拷贝,set、dict与上面的浅拷贝...

2019-07-05 09:36:21

阅读数 16013

评论数 0

python字符串拼接效率比较

直接看代码 方式一: import time start_time = time.perf_counter() s = '' for n in range(0,1000): s += str(n) end_time = time.perf_counter() print('Time...

2019-07-01 15:52:41

阅读数 16173

评论数 0

HTTP1.0与HTTP1.1区别

在HTTP/1,0时期,每次HTTP请求都会创建一个新的TCP连接,请求完成之后这个TCP连接就会关闭。这种通信模式的效率不高,所以在HTTP/1.1中,引用了HTTP长连接的概念,使用长连接的HTTP协议,会在响应头加入Connection:keep-alive。这样当浏览器完成一次请求后,浏览...

2019-06-04 09:38:26

阅读数 13302

评论数 0

方法内联(下)

然而,对于需要动态绑定的虚方法调用来说,即时编译器则需要先对虚方法调用进行虚化(devirtualize),即转换为一个或多个直接调用,然后才能进行方法内联。 即时编译器的去虚化方式可分为完全去虚化以及条件去虚化(guarded devirtualization)。 完全去虚化是通过类型推导或...

2019-05-29 13:50:45

阅读数 10342

评论数 0

方法内联(上)

它指的是:在编译过程中遇到方法调用时,将目标方法的方法体纳入编译范围之中,并取代原方法调用的优化手段。 方法内联不仅可以消除调用本身带来的性能开销,还可以进一步触发更多的优化。因此,它可以算是编译优化里最为重要的一环。 以getter/setter为例,如果没有方法内联,在调用getter/s...

2019-05-21 10:44:19

阅读数 11266

评论数 0

逃逸分析

Java中Iterable对象的foreach循环遍历是一个语法糖,Java编译器会将该语法糖编译为调用Iterable对象的iterator方法,并用返回的Iterator对象的hasNext以及next方法,来完成遍历。 public void forEach(ArrayList&am...

2019-05-21 10:32:58

阅读数 11190

评论数 0

Java字节码(基础篇)

操作数栈 Java字节码是Java虚拟机所使用的指令集。因此,它与Java虚拟机基于栈的计算模型是密不可分的。 在解释执行过程中,每当为Java方法分配栈桢时,Java虚拟机往往需要开辟一块额外的空间作为操作数栈,来存放计算的操作数以及返回结果。 具体来说便是:执行每一条指令之前,Java虚...

2019-05-16 17:21:52

阅读数 11114

评论数 0

JVM是如何实现反射的?

反射调用的实现 每个Method实例的第一次反射调用都会生成一个委派实现,它所委派的具体实现便是一个本地实现。本地实现非常容易理解。当进入了Java虚拟机内部之后,我们便拥有了Method实例所指向方法的具体地址。这时候,反射调用无非就是将传入的参数准备好,然后调用进入目标方法。 // v0...

2019-05-15 11:11:14

阅读数 9400

评论数 0

Java虚拟机是怎么实现synchronized的?

在Java程序中,我们可以利用synchronized关键字来对程序进行加锁。它既可以用来声明一个synchronized代码块,也可以直接标记静态方法或者实例方法。 当声明synchronized代码块时,编译而成的字节码将包含monitorenter和monitorexit指令。这两种指令均...

2019-05-15 10:59:57

阅读数 9375

评论数 0

JVM是如何执行方法调用的?(下)

1.虚方法的调用 Java里所有非私有实例方法调用都会被编译成invokevirtual指令,而接口方法调用都会被编译成invokeinterface指令。这两种指令,均属于Java虚拟机中的虚方法调用。 在绝大多数情况下,Java虚拟机需要根据调用者的动态类型,来确定虚方法调用的目标方法。这...

2019-05-10 11:03:01

阅读数 9461

评论数 0

JVM是如何执行方法调用的?(上)

重载与重写 重载的方法在编译过程中即可完成识别。具体到每一个方法调用,Java编译器会根据所传入参数的声明类型(注意与实际类型区分)来选取重载方法。选取的过程共分为三个阶段: 1.在不考虑对基本类型自动装拆箱(auto-boxing,auto-unboxing),以及可变长参数的情况下选取重载...

2019-05-10 10:59:29

阅读数 9442

评论数 0

Java虚拟机是如何加载Java类的?

Java语言的类型可以分为两大类:基本类型(primitive types)和引用类型(reference types)。基本类型是由Java虚拟机预先定义好的。 另一个大类引用类型,Java将其细分为四种:类、接口、数组类和泛型参数。由于泛型参数会在编译过程中被擦除,因此Java虚拟机实际上只...

2019-05-09 14:16:15

阅读数 9481

评论数 0

java代码是怎么运行的?

为什么Java要在虚拟机里运行? java程序抽象程度高,肯定不能直接在硬件上运行。运行之前肯定需要先转换程机器码。不同的机器转换出的机器码肯定不一样。 1.使用虚拟机Java转换出的字节码是一致的,通过java虚拟机字节码转换为对应的机器码,因此java才有了跨平台的效果,由于字节码不变,j...

2019-05-08 16:27:50

阅读数 10061

评论数 0

redis进行set操作时异常总结

事情经过:项目中使用redis,环境进行过一次网络迁移,之后就无法拿到redis连接。                 1、先通过ping命令排除网络原因,其实这里建议使用 telnet 命令:格式 telnet ip port,不仅能排查网络是否连通并且知道改端口号是否能脸上,以上的port指...

2019-01-03 09:37:28

阅读数 15744

评论数 0

ssh连接展示图形界面

环境描述:centos7 服务器:已安装图形界面 问题描述:使用ssh连接跑matplotlib制图时图形界面不出现提示:DISPLAY变量未定义 但在服务端跑matplotlib能正常展示该图形,后面在ssh连接试过用eog 命令打开一个png图片,发现同样的问题。 (eog:2061...

2018-12-29 14:47:36

阅读数 15370

评论数 0

linux下tomcat服务器添加远程调试配置

1.进到tomcat的bin目录下,敲命令vim catalina.sh,编辑catalina.sh文件,添加以下参数: CATALINA_OPTS='-agentlib:jdwp=transport=dt_socket,address=2222,suspend=n,server=y' 重启即...

2018-11-30 09:38:08

阅读数 14340

评论数 1

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