1 | import java.util.*; |
javascript
js 中switch 语句 区分类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function chooseUseRegion() {
$('#EffectiveType').change(function() {
$('.showdiv').hide();
switch ($(this).val()) {
case '1':
$('#use_time_2').show();
return;
case '2':
$('#use_time_1').show();
return;
case '0':
return;
default:
return;
};
});
}
前端路由实现之 #hash
前端路由实现方式 1 使用 h5 提供historyapi
2 使用hash 路由
跨域配置
简单请求
带cookie跨域 origin 不能为 *
ajax带cookie 请求
隐藏跨域
页面中api地址 /a?b=1&c=2
js map/reduce/filter/sort1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30// map
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var results = arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]
console.log(results);
// reduce
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
return x + y;
}); // 25
// filter
var arr = [1, 2, 4, 5, 6, 9, 10, 15];
var r = arr.filter(function (x) {
return x % 2 !== 0;
});
r; // [1, 5, 9, 15]
//sort
var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
console.log(arr); // [1, 2, 10, 20]
html页面注入js1
2
3
4
5
6
7
8
9
10(function(d,s,id){
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)){ return; }
js = d.createElement(s); js.id = id;
js.onload = function(){
console.log(11111)
};
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
})(document,'script','facebook-jssdk')
jvm
JVM小工具
在${JAVA_HOME}/bin/目录下Sun/Oracle给我们提供了一些处理应用程序性能问题、定位故障的工具, 包含
bin | 描述 | 功能 |
---|---|---|
jps | 打印Hotspot VM进程 | VMID、JVM参数、main()函数参数、主类名/Jar路径 |
jstat | 查看Hotspot VM 运行时信息 | 类加载、内存、GC[可分代查看]、JIT编译 |
jinfo | 查看和修改虚拟机各项配置 | -flag name=value |
jmap | heapdump: 生成VM堆转储快照、查询finalize执行队列、Java堆和永久代详细信息 | jmap -dump:live,ormat=b,file=heap.bin [VMID] |
jstack | 查看VM当前时刻的线程快照: 当前VM内每一条线程正在执行的方法堆栈集合 | Thread.getAllStackTraces()提供了类似的功能 |
javap | 查看经javac之后产生的JVM字节码代码 | 自动解析.class文件, 避免了去理解class文件格式以及手动解析 class文件内容 |
jcmd | 一个多功能工具, 可以用来导出堆, 查看Java进程、导出线程信息、 执行GC、查看性能相关数据等 | 几乎集合了jps、jstat、jinfo、jmap、jstack所有功能 |
jconsole | 基于JMX的可视化监视、管理工具 | 可以查看内存、线程、类、CPU信息, 以及对JMX MBean进行管理 |
jvisualvm | JDK中最强大运行监视和故障处理工具 | 可以监控内存泄露、跟踪垃圾回收、执行时内存分析、CPU分析、线程分析… |
VM常用参数整理
参数 | 描述 |
---|---|
-Xms | 最小堆大小 |
-Xmx | 最大堆大小 |
-Xmn | 新生代大小 |
-XX:PermSize | 永久代大小 |
-XX:MaxPermSize | 永久代最大大小 |
-XX:+PrintGC | 输出GC日志 |
-verbose:gc | - |
-XX:+PrintGCDetails | 输出GC的详细日志 |
-XX:+PrintGCTimeStamps | 输出GC时间戳(以基准时间的形式) |
-XX:+PrintHeapAtGC | 在进行GC的前后打印出堆的信息 |
-Xloggc:/path/gc.log | 日志文件的输出路径 |
-XX:+PrintGCApplicationStoppedTime | 打印由GC产生的停顿时间 |
对内存分区情况截图
- 生产故障JVM 进程cpu 占用率一直100%
解决办法
(
首先找出问题进程内CPU占用率高的线程
再通过线程栈信息找出该线程当时在运行的问题代码段
)
jvm负载一直居高不下,先使用了 top -c 查看当前进程详情
使用
遍历树时递归结构栈溢出
jvm 参数要修改 -Xss
classpath : String path = this.getClass().getResource(“”).getPath();
Class.forName(xxx.xx.xxx) 返回一个类
作用时要求jvm查找并加载指定的类,也就是说JVM会执行该类的静态代码段。
1 | # 查看运行的进程 |
heap dump
heap dump文件是一个二进制文件,它保存了某一时刻JVM堆中对象使用情况。HeapDump文件是指定时刻的Java堆栈的快照,是一种镜像文件。Heap Analyzer工具通过分析HeapDump文件,哪些对象占用了太多的堆栈空间,来发现导致内存泄露或者可能引起内存泄露的对象。
thread dump
thread dump文件主要保存的是java应用中各线程在某一时刻的运行的位置,即执行到哪一个类的哪一个方法哪一个行上。thread dump是一个文本文件,打开后可以看到每一个线程的执行栈,以stacktrace的方式显示。通过对thread dump的分析可以得到应用是否“卡”在某一点上,即在某一点运行的时间太长,如数据库查询,长期得不到响应,最终导致系统崩溃。单个的thread dump文件一般来说是没有什么用处的,因为它只是记录了某一个绝对时间点的情况。比较有用的是,线程在一个时间段内的执行情况。
两个thread dump文件在分析时特别有效,困为它可以看出在先后两个时间点上,线程执行的位置,如果发现先后两组数据中同一线程都执行在同一位置,则说明此处可能有问题,因为程序运行是极快的,如果两次均在某一点上,说明这一点的耗时是很大的。通过对这两个文件进行分析,查出原因,进而解决问题。
可视化查看 jvm 内存dump
jhat -port 5000 dump.bin
bash
bash 脚本 end of line sequence
在windows 中 要把bash脚本换行格式调账为 CRLF -> LF
bash 变量类别
- 局部变量
- 只在当前shell实例中有效,其他shell启动不能访问局部变量
- 环境变量
- 所有的程序包括shell启动的程序都可以访问环境变量,shell也可以定义环境变量
- shell变量
单引号的限制
- 单引号的任何字符都会原样输出,单引号总的变量都是无效的
- 单引号中不能出现单引号,即使使用转义符
双引号的优点
- 双引号中可以有变量
- 双引号中可以出现转移字符
拼接字符串1
2
3
4
5
6
7name="ziggle"
greeting="hello ,"$name" ! "
greetin="hello , ${name} ! "
# 提取字符串长度
string="abcd"
echo ${#string} #输出 4
bash 只支持一维数组
声明
1
2
3
4
5arr_name=(value0 value1 value2) # 或者
arr_name=(
value1
value2
)读取数组
${数组名[下标]}
value=${arr_name[n]}
1 | #!/bin/bash |
传递参数
在执行脚本时,向脚本传递参数,脚本内获取参数的格式为:$n
n 代表一个数字, 1 为执行脚本时传递的第一个参数 …
参数处理 | 说明 |
---|---|
$# | 传递到脚本的参数个数 |
$* | 以一个但字符串显示所有向脚本传递的参数 |
$$ | 脚本运行的当前进程ID号 |
$! | 后台运行的最后一个进程ID号 |
$@ | 与$*相同,但是使用时加引号,并在引号中返回每个参数 |
$- | 显示shell使用的当前选项,与set 命令功能相同 |
$? | 显示最后命令的退出状态,0表示没错,其他值有错 |
$USER | 运行脚本用户的用户名 |
$HOSTNAME | hostname |
$SECONDS | 脚本运行since开始 的时间长 |
$LINENO | 当前脚本行号 |
bash中数学运算
使用 awk ,expr
expr是表达式计算工具1
2
3#!/bin/bash
val=`expr 2 + 2`
echo " value : $val "
bash 使用let进行简单算术运算
1
2
3
4
5
6
7
8
9
10
11
12 #!/bin/bash
let a=5+4
echo $a #9
let "a = 5 + 4"
echo $a #9
let a++
echo $a #10
let "a = 4 * 5"
echo $a # 20使用双括号计算
1
2
3 #!/bin/bash
a=$(( 4 + 5 ))
echo $a #9
jquery
- 对img标签值修改
1 | $('#imageId')[0].src; |
- 前端路由
1 | var regexps = [ |
- model->view
1 | art-template |
在使用jquery 对select 元素注册事件
1 | var select = document.getElementById('use_time'); |
选择input 标签属性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 $('#table td > input:checked').each((i, j) => { ids.push(parseInt(j.getAttribute('adid'))) });
<table class="table table-striped table-hover">
<thead>
<tr>
<th class="table-checkbox">
<input id="allUser" control="复选框" type="checkbox" class="group-checkable" data-set=".checkboxes" />
</th>
<th control="序号">序号</th>
<th control="讲师">用户</th>
</tr>
</thead>
<tbody id="userTable"></tbody>
</table>
// 选择 input 上级 tbody 子元素 的input 属性
$(this).parents('thead').next().children().find('input').prop('checked' ,true);
1 | jQuery.parent(expr) //找父元素 |