w1100n
This site is best viewed in Google Chrome
wiloon, 1/17/2020 16:34

# 查看版本 [root@osboxes java]# firewall-cmd –version 0.3.9 # 查看状态 [root@osboxes java]# systemctl status firewalld.service OR [root@osboxes java]# firewall-cmd –state running # 获取启用的zone [root@osboxes java]# firewall-cmd –get-active-zones public interfaces: eno16777984 # 查看指定区域中开放的端口和服务 firewall-cmd –zone=public –list-all # 不要忘记 –permanent [root@osboxes java]# firewall-cmd … Continue reading

wiloon, 1/13/2020 16:31

伪共享的非标准定义为:缓存系统中是以缓存行(cache line)为单位存储的,当多线程修改互相独立的变量时,如果这些变量共享同一个缓存行,就会无意中影响彼此的性能,这就是伪共享。 https://www.cnblogs.com/cyfonly/p/5800758.html

wiloon, 1/12/2020 15:22

set 1 bios_grub on pacman -S grub grub-install –target=i386-pc /dev/sdX grub-mkconfig -o /boot/grub/grub.cfg

wiloon, 1/12/2020 14:51

tune2fs命令 一.简介: tune2fs用来调整和查看ext2/ext3(现在有ext4了)文件系统的文件系统参数,Windows平台如果出现意外断电死机情况,下次开机一般都会出现系统自检。Linux系统当然也有文件系统自检,而且是可以通过tune2fs命令,自行定义自检周期及方式。 二.用法: 自己去man吧,man man,更健康。。。 常用选项说明: -l 查看文件系统信息 -c max-mount-counts 设置强制自检的挂载次数,如果开启,每挂载一次mount conut就会加1,超过次数就会强制自检 -i interval-between-checks[d|m|w] 设置强制自检的时间间隔[d天m月w周] -m reserved-blocks-percentage 保留块的百分比 -j 将ext2文件系统转换为ext3类型的文件系统 -L volume-label 类似e2label的功能,可以修改文件系统的标签 -r reserved-blocks-count 调整系统保留空间 -o [^]mount-option[,…] Set or clear the indicated default mount options in the filesystem. … Continue reading

wiloon, 1/11/2020 17:30

找到super block 备份 #查看文件系统备份Superblock mke2fs -n /dev/sdb #查看文件系统备份Superblock dumpe2fs /dev/sdb1 | grep –before-context=1 superblock arch# dumpe2fs /dev/sdb1 | grep –before-context=1 superblock dumpe2fs 1.45.5 (07-Jan-2020) Group 0: (Blocks 0-32767) csum 0xb451 [ITABLE_ZEROED] Primary superblock at 0, Group descriptors at 1-38 — … Continue reading

wiloon, 1/11/2020 14:04

ansible-pull 该指令的使用涉及Ansible的另一种工作模式:pull模式(Ansible默认使用push模式)。这和通常使用的push模式工作机理刚好相反,其适用于以下场景:①你有数量巨大的机器需要配置,即使使用高并发线程依旧要花费很多时间;②你要在刚启动的、没有网络连接的主机上运行Anisble。 ansible-pull命令使用格式如下: ansible-pull [options] [playbook.yml] 通过ansible-pull结合Git和crontab一并实现,其原理如下:通过crontab定期拉取指定的Git版本到本地,并以指定模式自动运行预先制订好的指令。 具体示例参考如下: */20 * * * * root /usr/local/bin/ansible-pull -o -C 2.1.0 -d /srv/www/king-gw/ -i /etc/ansible/hosts -U git:// git.kingifa.com/king-gw-ansiblepull >> /var/log/ansible-pull.log 2>&1 ansible-pull通常在配置大批量机器的场景下会使用,灵活性稍有欠缺,但效率几乎可以***提升,对运维人员的技术水平和前瞻性规划有较高要求。

wiloon, 1/10/2020 15:45

概述 经常需要使用java对象的属性来封装程序的数据,每次都使用反射技术完成此类操作过于麻烦,所以sun公司开发了一套API,专门用于操作java对象的属性。 内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种处理方法。 例如类A中有属性name,那我们可以通过getName,setName 来得到其值或者设置新的值。 通过getName/setName 来访问name属性,这就是默认的规则。 Java中提供了一套API 用来访问某个属性的getter/setter方法,通过这些API可以使你不需要了解这个规则,这些API存放于包java.beans 中。 一般的做法是通过类Introspector的getBeanInfo方法获取某个对象的BeanInfo信息,然后通过BeanInfo来获取属性的描述器(PropertyDescriptor),通过这个属性描述器就可以获取某个属性对应的getter/setter方法,然后我们就可以通过反射机制来调用这些方法。 我们又通常把javabean的实例对象称之为值对象,因为这些bean中通常只有一些信息字段和存储方法,没有功能性方法。 一个JavaBean类可以不当JavaBean用,而当成普通类用。JavaBean实际就是一种规范,当一个类满足这个规范,这个类就能被其它特定的类调用。一个类被当作javaBean使用时,JavaBean的属性是根据方法名推断出来的,它根本看不到java类内部的成员变量。去掉set前缀,然后取剩余部分,如果剩余部分的第二个字母是小写的,则把剩余部分的首字母改成小的。 内省访问JavaBean有两种方法: 通过PropertyDescriptor来操作Bean对象 public static void demo1() throws Exception { User user = new User(“zhangsan”, 21); String propertyName = “name”; // 直接指定要访问的属性 PropertyDescriptor pd = new PropertyDescriptor(propertyName, … Continue reading

wiloon, 1/9/2020 10:27

JUnit5的第一个可用性版本是在2017年9月10日发布的。 JUnit5架构 相比JUnit4,JUnit5由三个不同的子项目及不同的模块组成。 JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform 启动Junit测试、IDE、构建工具或插件都需要包含和扩展Platform API,它定义了TestEngine在平台运行的新测试框架的API。 它还提供了一个控制台启动器,可以从命令行启动Platform,为Gradle和Maven插件提供支持。 JUnit Jupiter 它用于编写测试代码的新的编程和扩展模型。它具有所有新的Junit注释和TestEngine实现来运行这些注释编写的测试。 JUnit Vintage 它主要的目的是支持在JUnit5的测试代码中运行JUnit3和4方式写的测试,它能够向前兼容之前的测试代码。 https://tonydeng.github.io/2017/10/09/junit-5-tutorial-introduction/ 安装 你可以在Maven或Gradle项目中使用JUnit5,包含最小的两个依赖关系,即junit-jupiter-engince和junit-platform-runner。 <properties> <junit.jupiter.version>5.5.2</junit.jupiter.version> <junit.platform.version>1.5.2</junit.platform.version> </properties> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.jupiter.version}</version> </dependency> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-runner</artifactId> … Continue reading

wiloon, 1/2/2020 0:26

在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢? 我用过两个方法,下面分别举例说明。为了更通用,这两个例子中的文本内容都是多行的。 使用echo命令 echo “Hello, World! My name is Shengbin.” > readme.txt 这种方法其实就是把echo的输出重定向到了文件。echo会原样保留换行符,所以多行也是支持的。 使用cat命令 cat > readme.txt << END_TEXT Hello, World! My name is Shengbin. END_TEXT 上面的END_TEXT是一个自定义的标识符,二者之间的文本将被认为是一个文件的内容,这个文件作为cat > readme.txt的输入参数。 这是一种被称为here document的技术。 这种方法有一点优势就是在脚本里写的文本内容的格式与想要呈现在文本文件中的一模一样。上一种方法则要求内容的第一行必须在echo的同一行。 区分单引号与双引号 Shell中双引号之间的内容会被进行变量展开和命令执行,如果想原样保留文本字符串,应该使用单引号(这种单双引号的区分在别的语言里也有,如PHP、Perl之类的脚本语言)。 例如: echo “Your working directory can … Continue reading

wiloon, 12/30/2019 14:15

主动静态,说明这个故障一直存在,无法消除,被动偶发说明是以前有过,后来好了,比如你断电后需要设定门一键升窗,你设定好了就成被动偶发的。可以消除。 https://zhidao.baidu.com/question/1239311185193933419.html

wiloon, 12/25/2019 17:23

关于排序: ls 命令默认会按照文件名字母序排序 如果使用 -t 选项,将首先按照文件的最后修改时间排序(时间越新越靠前),之后再按字母顺序排 -T 结合 -l 可将时间显示为 hh:mi:ss 的形式,但不会按时间排序,因而不会影响默认字母排序 -S 按文件大小排序,越大越靠前 -u 结合 -l 选项可以看到每个文件最后被访问的时间,并且也会按该时间排序 以上影响排序的选项如果结合 -r 选项一起使用,则按相反顺序排列 https://www.iteye.com/blog/wxl24life-2041310

wiloon, 12/23/2019 18:44

16348=16k,用bitmap来压缩心跳包的话,就相当于使用2810=2KB大小的心跳包。而如果用crc16算法(redis使用这个而不是用哈希一致性算法)来确定哈希槽的分配。他的最大值是是2的16次方。用上面的算法换算需要8KB的心跳包来传输,作者自己认为这样不划算。而一个redis节点一般不会有超过1000个master(这个是作者自己说的),用16k来划分是比较合适的 https://www.zhihu.com/question/54817522 https://github.com/antirez/redis/issues/2576

wiloon, 12/23/2019 16:00

############### rdb ############### save 600 1 save 300 20000 save 60 80000 stop-writes-on-bgsave-error yes rdbcompression yes rdbchecksum yes dbfilename dump_7000.rdb # redis不会自动 创建此目录 dir /data/redisdata 关于Redis说点什么,目前都是使用Redis作为数据缓存,缓存的目标主要是那些需要经常访问的数据,或计算复杂而耗时的数据。缓存的效果就是减少了数据库读的次数,减少了复杂数据的计算次数,从而提高了服务器的性能。 一、redis持久化—-两种方式 1、redis提供了两种持久化的方式,分别是RDB(Redis DataBase)和AOF(Append Only File)。 2、RDB,简而言之,就是在不同的时间点,将redis存储的数据生成快照并存储到磁盘等介质上; 3、AOF,则是换了一个角度来实现持久化,那就是将redis执行过的所有写指令记录下来,在下次redis重新启动时,只要把这些写指令从前到后再重复执行一遍,就可以实现数据恢复了。 4、其实RDB和AOF两种方式也可以同时使用,在这种情况下,如果redis重启的话,则会优先采用AOF方式来进行数据恢复,这是因为AOF方式的数据恢复完整度更高。 5、如果你没有数据持久化的需求,也完全可以关闭RDB和AOF方式,这样的话,redis将变成一个纯内存数据库,就像memcache一样。 二、redis持久化—-RDB 1、RDB方式,是将redis某一时刻的数据持久化到磁盘中,是一种快照式的持久化方法。 2、redis在进行数据持久化的过程中,会先将数据写入到一个临时文件中,待持久化过程都结束了,才会用这个临时文件替换上次持久化好的文件。正是这种特性,让我们可以随时来进行备份,因为快照文件总是完整可用的。 3、对于RDB方式,redis会单独创建(fork)一个子进程来进行持久化,而主进程是不会进行任何IO操作的,这样就确保了redis极高的性能。 4、如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。 5、虽然RDB有不少优点,但它的缺点也是不容忽视的。如果你对数据的完整性非常敏感,那么RDB方式就不太适合你,因为即使你每5分钟都持久化一次,当redis故障时,仍然会有近5分钟的数据丢失。所以,redis还提供了另一种持久化方式,那就是AOF。 三、redis持久化—-AOF 1、AOF,英文是Append Only File,即只允许追加不允许改写的文件。 … Continue reading

wiloon, 12/18/2019 17:53

https://stackoverflow.com/questions/50481885/integration-of-angular-5-with-spring-mvc 1.Create normal Dynamic web project. 2.Add all dependancy required for spring or user maven pom.xml 3.Open CMD, navigate to angular2 application. Hit command ‘npm install’ and then ‘ng build’ or use ‘ng build –prod’ for production build. this command … Continue reading

wiloon, 12/17/2019 14:56

在maven上debug,经常跟jetty或tomcat插件在一起使用。如运行mvnDebug jetty:run命令后再通过eclipse远程连接调试。 mvnDebug jetty:run # 默认调试端口8000 maven的安装目录下存在 mvnDebug.bat 文件,打开可以看到具体的配置项如下: set MAVEN_DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 这里对几个参数进行说明: – -Xdebug :  启动debug模式 – -Xnoagent:  禁用默认sun.tools.debug调试器 – -Djava.compiler:指定编译器类型,可方便优化 jitc jitc_de等 – -Xrunjdwp:启动调试协议JDWP,全称是Java Debug Wire Protocol,它定义了JPDA front-end和JPDA back-end之间通讯信息的二进制格式。这里的通讯信息主要包括两种:调试器发送给JVM的请求信息和JVM发送给调试器的调试信息。有如下子项: + -transport:JPDA front-end和back-end之间的传输方法。dt_socket表示使用套接字传输。 + -server:y/n 该jvm是被调试者还是调试器 + -suspend:y/n 是否等待外部调试器的连接,如jetty启动时候,是否等待eclipse的远程连接后在进行jetty的初始化工作。在调试web容器的时候用的很多 + -address:监听端口 mvnDebug … Continue reading

wiloon, 12/17/2019 12:29

https://blog.csdn.net/u013613428/article/details/51499911 要高效的开发Java代码,那就必须要让java像js一样,修改过的代码可以实时的反应出来。要了解如何做到这一点,我们先要知道JVM是如何工作的: 我们知道,JAVA程序都是运行在java虚拟机上面(当然JVM有两种类型,JDK和单纯的JRE,这里我们主要是指的JDK,因为只有JDK包含了debug功能,而我们只有在debug端口打开的情况下才能实现run time class load),我们的写的每一个Java文件,会被编译器编译成为class文件,然后根据选择不同的打包选择,比如说(jar, war, ear),被打包存放到系统的classpath中。在运行一个java程序的时候,会有几个步骤, 包括装载,链接,初始化,翻译(在翻译成机器码的时候同时会对代码进行优化,inline),运行,就如下图 这里的关键,就是这个classloader。所有的类都会在jvm中生成为class对象,存放在内存当中,(这里,主要分成两部分,常量池和方法字节码)当我们的程序生成一个类的实例或instance时候,就会根据这个类对象,分配和初始化内存用于存储对象的field,然后在调用对象方法的时候,则从class对象中获取方法字节码,如下图: 因此,如果我们能够在JVM里面途欢这个class对象,那么我们创建的所有object或instance,在调用函数的时候,就可以动态获得你修改之后的代码。如下图: hotswap的原理,就是替换jvm里面的class对象. Sun 在2002年把这项技术引入到java 1.4的JVM中,Hotswap需要和debuggerAPI一起协同工作,我们可以通过debugger来更新jvm里面同名的class bytecode 因此,这也就限制了,我们在使用hotswap的时候,必须使用debug mode.因此也就限制了java app必须是运行在jdk上,而不是jre上,JAVA_HOME必须指向JDK。 说了这么多理论,回到我们最初的话题,如何做到hotswap呢,步骤很简单: 用debug模式attach我们的app 修改你的java文件,并且编译 这时,神奇的事情发生了,如下图 我们的class被reload了,我们可以不用重新把app部署到服务器上就可以直接看修改代码之后的结果。 等等,天底下有这么容易的事情吗?!这个solution是有缺陷的,那就是我们只能简单修改class method的内容,如果我们新添加了Method,field,或者在method里面引用了新的lib,增加了Import语句,那么对不起,你会看到: hot swap失败了。 那么有没有什么解决方案呢?有!收费的JRebel,或者免费的HotSwapAgent+DCEVM 让我们来看看什么是DCEVM: https://dcevm.github.io/ The Dynamic Code Evolution VirtualMachine (DCEVM)is a modification of … Continue reading

wiloon, 12/12/2019 18:05

https://blog.csdn.net/u010856276/article/details/82146607 ibatis升级到mybatis,不是简单的升级包就OK了,为什么这么说呢?因为升级后,调用接口变了,配置文件的写法也变了,所以从某种程度来说, mybatis不是ibatis的升级版,只是一个家族出来的,长得像而已,升级的工作量还是很大的。 下面我们就来实际升级一下,毕竟ibatis最终是要淘汰的,同时mybatis也给我们在日常开发中提高了工作效率。 升级流程如下: 1、移出项目中的ibatis相关包: ibatis相关包其实只有一个包,即:ibatis-sqlmap-x.x.x.jar,各项目因版本而;如果项目同时使用了spring集成包spring-orm-x.x.x.jar,也一并移出。 2、引入mybatis相关包依赖到项目中: mybatis相关包其实只有一个包,即:mybatis-x.x.x.jar,但我们一般是和spring一起集成使用mybatis的,这样能方便使用spring提供的事务管理特性,所以还需要引入mybatis-spring-x.x.x.jar 在maven的pom,xml引入配置如下 org.mybatis mybatis 3.4.6 org.mybatis mybatis-spring 1.3.2 1 2 3 4 5 6 7 8 9 10 3、移出项目中的ibatis相关配置及文件(与spring集成为样例): classpath:common-sqlmap-config.xml classpath*:ibatis-sqlmap-config.xml 1 2 3 4 5 6 7 8 9 10 同时移出common-sqlmap-config.xml和ibatis-sqlmap-config.xml … Continue reading

wiloon, 12/11/2019 16:48

awk、grep、sed是linux操作文本的三大利器,也是必须掌握的linux命令之一。三者的功能都是处理文本,但侧重点各不相同,其中属awk功能最强大,但也最复杂。grep更适合单纯的查找或匹配文本,sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。 – awk https://blog.wiloon.com/?p=3738 – sed https://blog.wiloon.com/?p=2838 – grep https://blog.wiloon.com/?p=468 https://thief.one/2017/08/12/1/

next page
辽ICP备14012896