工作中的各种笔记

//压缩
tar czvf {name} {目录名}
//解压
tar zxf [name]

局部变量 在栈里
HosSpot
J9
JrCokit
-Djava.rmi.server.hostname=192.168.17.132 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=911 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

本地监控java

jconsole

java -jar -Djava.rmi.server.hostname=192.168.16.211 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=911 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false /dtp/jar/app/dus-log.jar

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -Xms128m -Xmx256m -jar /dtp/jar/app/twdmc.jar PES
java -Xms128m -Xmx128m -javaagent:/dtp/jar/app/SizeOf.jar -jar /dtp/jar/app/twdsc.jar 994171459 uas

scp -r /home/package/uis/Topwalk-UISv2.4_little/package/install_uis2.4.sh root@192.168.16.23:~

//设置数据库远程连接
vi /etc/my.cnf
bind-address=127.0.0.1,把这一行给注掉,再重启数据库

查询mysql正在执行的语句
show processlist;


创建sqlservice 自增字段
Create Table yourtable
(
id int identity(1,1),--这是自增id
name varchar(50) --这列写着耍的
)


标准光闸路径
/231home/package/fgap/Topwalk-FGAPv2.2/FGAP_PACKAGE

创建文件 创建文件夹
touch mkdir

crontab [-u username]   //省略用户表表示操作当前用户的crontab
-e (编辑工作表)
-l (列出工作表里的命令)
-r (删除工作作)


ps -ef | grep $0 | grep -v grep | grep -v $$ |awk '{print $2}'|xargs kill -9 > /dev/null 2>&1
杀死其他和本脚本名称一样的其他的进程
如果有保证只有一个脚本在执行的需求,可以在第一行加上这一行

linux下启动Tomcat可看到日志输出
sh catalina.sh run

Iterator可以这样用
for (Iterator iter = this.communicationListeners.iterator(); iter.hasNext(); ) {
FTPCommunicationListener l = (FTPCommunicationListener)iter.next();
l.received(line);
}

mysql查询库中所有表名称
select TABLE_NAME,TABLE_COMMENT from information_schema.tables where table_schema='dtpser' and TABLE_TYPE='BASE TABLE'

sqlserver 查询所有触发器
select * from sysobjects where xtype='tr'
windows下面查看端口占用
netstat -ano

hibernate查询出来数据不关闭session时,通过操作修改类的值来修改数据库里面的值。程序结束时session自动提交事务,则修改数据库
List<TbServiceIpControl> controls = serviceIpControlDao.findByProperty("serviceId", portMapId);
for(TbServiceIpControl tic : controls){
tic.setCheckType(ipCheckType);
}

之前一直没发现这个问题,后来是因为我的导航栏数据库中数据发生变动后,产生菜单的时候又update了一遍数据库中的数据,使得部分数据值为空了,当时觉得很奇怪,后来仔细看了下log4j打印的日志发现其中有更新的动作,在代码中将数据库中获取到的对象set一个对象属性时,数据库就update了,但是这个问题是怎么产生的呢?

问题重述
[java] view plain copy 在CODE上查看代码片派生到我的代码片
Set<User> users = new HashSet<User>();
User user = null;
for(int i = 0; i < 10; i++){
user = new User();
user.setUserName("wy" + i);
users.add(user);
}
Company company = userDao.getCompany();
company.setUsers(users);

类似上面的代码,company是刚刚从数据库中获取到的,然后我构造了一个User对象的Set集合,然后在这里直接setUsers的时候就出现了更新数据库的动作,当然这段代码只是示例并不是实际的项目代码。


问题在哪里
Hibernate分为三种基本的状态:游离态、自由态(临时状态)、持久态。
持久化状态:与session关联并且和在数据库有数据,已经持久化了并且在数据库的缓存当中了。
我这里的这个对象应该是持久化状态的对象然后我直接构造了一个user对象的set集合,同时对这个对象进行set操作,那么缓存Session中的数据发生改变,那么接着数据库也会跟着进行相应的改变。所以就执行了update的更新操作。


怎么解决
其他两种状态:
1. 临时状态:就是直接new出来的对象,既没有持久化到数据库中去,也没有在session当中。
2. 游离状态:在Session中没有了,但是已经持久化到了数据库当中。

那么这个地方怎么解决呢?
1.如果这个对象(例子中的company)本身不需要用的话,可以直接new一个Company的对象出来然后再setUsers这个时候因为不是Session中的数据,那么不会因为对象的属性发生改变而同步到数据库中去。
2. 如果这个对象(例子中的company)要用的到,那么,在set之前可以先将其转为游离态,这样的话会用到session的几个方法:close、clear、evict。
close方法:关闭session这样这个对象肯定是游离态了,因为session已经关闭了,但是往往我们实际的开发过程中,session在后面是要用的到的,所以这个方法可行,但是不一定用得上,分清具体的情况。
clear方法:将session中的所有的对象全部清除出缓存,这个方式有点劳师动众,不过session清除了全部的对象之后自然就会变为游离态了,这样做不是很好吧我感觉。
evict方法:将某一个对象清除出缓存session,这个方法是很好的实现方式,推荐使用。调用的时候是这样的,session.evict(Object obj);这样就可以了。


知识扩充:深入理解Hibernate三种状态

状态之间如何转换

匹配文件中带ERROR的行
more /log/applog/twdsc/twdsc_371417750.log |grep ERROR

//linux下创建FTP用户SMB用户
useradd -d "/home/test1/" -g root test1 -s /sbin/bulogin
echo topwalk|/usr/bin/passwd --stdin test1
/usr/bin/smbadduser test1:test1
(echo topwalk; echo topwalk) | smbpasswd -as test1

useradd -d "/home/ftptest1/" -g root ftptest1 -s /sbin/bulogin
echo topwalk|/usr/bin/passwd --stdin ftptest1

sprint中设置非单例对象时在bean中加入
scope="prototype"
//查找linux下文件夹
find / -name "rollback" -type d

eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 is [not] div by是否能被某数整除 is [not] even是否为偶数 is [not] even by $b即($a / $b) % 2 == 0 is [not] odd是否为奇 is not odd by $b即($a / $b) % 2 != 0 示例:

equal/ not equal/ greater than/ less than/ less than or equal/ great than or equal/后面的就不用说了

Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词:eq、ne、neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、div by、even by、odd by、==、!=、>、<、<=、>=. 使用这些修饰词时必须和变量或常量用空格格开.

Example 7-11. if statements


Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。
而volatile关键字就是提示JVM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。
由于使用volatile屏蔽掉了JVM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。

1.查看vsftpd服务是否运行 service vsftpd status

########2.创建一个目录,通常在/data下 cd /data→makdir cdm(省略)

3.创建一个用户且指定目录 useradd -d /data/cdm cdm

4.修改用户名密码 passwd cdm

5.给目录加权限 chmod -R 777 /data/cdm
smbpasswd -a username

原文地址:https://www.cnblogs.com/hao66/p/6906045.html