2019-05-17 坑
like '%:loginId%'
单引号中无法使用变量进行绑定 *like '%:loginId%'
单引号中无法使用变量进行绑定- nc 老版本监听需要添加-p参数
nc -l -p 9999
* nc 老版本监听需要添加-p参数nc -l -p 9999
2019-05-17 hibernate代理类
package a;
import org.apache.log4j.Logger;
import org.hibernate.collection.spi.PersistentCollection;
import org.hibernate.proxy.HibernateProxy;
import org.hibernate.proxy.LazyInitializer;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class HibernateProxyUtil {
private static Logger log = Logger.getLogger(HibernateProxyUtil.class);
private final HashMap<Object,Object> map=new HashMap<>();
private static final Set<String> TYPES;
static {
TYPES = new HashSet<>();
TYPES.addAll(Arrays.asList("java.lang.Integer",
"java.lang.Double",
"java.lang.Float",
"java.lang.Long",
"java.lang.Short",
"java.lang.Byte",
"java.lang.Boolean",
"java.lang.Character",
"java.lang.String"));
}
public Object getOwnClass(Object object){
if(object==null)return object;
forall(object);
return object;
}
public void forall(Object object){
if(object==null)return;
if(map.containsKey(object)) {
return;
}
map.put(object,object);
Class t =object.getClass();
Field[] fields=t.getDeclaredFields();
for (Field field1 :fields){
//设置字段可访问
field1.setAccessible(true);
try {
//得到字段对应的值
Object obj = field1.get(object);
if(obj==null)continue;
//如果是基本类型
if(obj.getClass().isPrimitive())continue;
//如果是基本类型的包装类型
if(TYPES.contains(obj.getClass().getName()))continue;
if (obj instanceof HibernateProxy) {
//如果已经见过这个地址(循环引用)
if(map.containsKey(obj)){
field1.set(object,map.get(obj));
}else {
LazyInitializer initializer = ((HibernateProxy) obj).getHibernateLazyInitializer();
Object real = initializer.getImplementation();
map.put(obj,real);
field1.set(object,real);
}
} else if (obj instanceof PersistentCollection) {
//这种情况还未解决
PersistentCollection collection = (PersistentCollection) obj;
//TODO
field1.set(object,null);
// if (!collection.wasInitialized())
// return null;
// Object val = collection.getValue();
// if (val == null)
// return null;
// o=val;
}
//递归当前对象的子属性
forall(field1.get(object));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
}
2019-05-17 链接
前端
通知
2019-06-02 log4j配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' >
<appender name="myConsole" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="[%d{dd HH:mm:ss,SSS\} %-5p] [%t] (%c:%L) - %m%n" />
</layout>
</appender>
<appender name="myFile" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="im.log" /><!-- 设置日志输出文件名 -->
<!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
<param name="Append" value="true" />
<param name="MaxBackupIndex" value="10" />
<param name="Encoding" value="UTF-8"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%p (%c:%L)- %m%n" />
</layout>
</appender>
<logger name="org.hibernate">
<level value="warn" />
</logger>
<logger name="org.springframework">
<level value="warn" />
</logger>
<!-- 根logger的设置-->
<root>
<priority value ="debug"/>
<appender-ref ref="myConsole"/>
</root>
</log4j:configuration>
2019-05-26 DBUtil
package util;
import java.io.IOException;
import java.io.InputStream;
import java.sql.DriverManager;
import java.util.Properties;
import org.apache.log4j.Logger;
import java.sql.Connection;
public class DBUtil {
private static Logger log = Logger.getLogger(DBUtil.class);
private static String driverClassName;
private static String url;
private static String username;
private static String password;
public static void syso(){
System.out.println(driverClassName+"\r"
+ url+"\r"
+username+"\r"
+password);
}
public static void init(){
/*path 不以’/'开头时默认是从此类所在的包下取资源,
* 以’/'开头则是从ClassPath根下获取。
* 其只是通过path构造一个绝对路径,最终还是由ClassLoader获取资源。
*/
InputStream fiss = DBUtil.class.getResourceAsStream("/jdbc.properties");
Properties prop = new Properties();
try {
prop.load(fiss);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driverClassName=prop.getProperty("driverClassName");
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");
}
public static void main(String[] args) {
Connection con=DBUtil.getConnection();
System.out.println(con);
}
public static Connection getConnection() {
DBUtil.init();
Connection conn=null;
try{
Class.forName(driverClassName);
conn=(Connection) DriverManager.getConnection(url,username,password);
}catch(Exception e){
e.printStackTrace();
try {
throw e;
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}return conn;
}
public static void closeConnection(Connection conn) throws Exception{
DBUtil.init();
try {
if(conn!=null){
conn.close();
}
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
}
2019-05-28 BookModel
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.Vector;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ScrollPaneConstants;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
/**
* * @author ZhangLiang
*/
public class BookModel {
public static void main(String[] args) {
getTestJTable("select * from UserDoc");
}
public static void getTestJTable(String strSql) {
JFrame f = new JFrame("Sql结果放入JTable");
try {
Connection conn = getConn();
PreparedStatement ps = conn.prepareStatement(strSql);
ResultSet rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int rsmdCount = rsmd.getColumnCount();
JTable table = new JTable(0, rsmdCount); //这里应该是根据那个列数定义,或者是,普及后,然后宽度定义。
table.getTableHeader().setResizingAllowed(true);
DefaultTableModel dataModel = (DefaultTableModel) table.getModel();
DefaultTableCellRenderer r = new DefaultTableCellRenderer();
r.setHorizontalAlignment(JLabel.CENTER);
table.setDefaultRenderer(Object.class, r);
int count = dataModel.getRowCount(); //这里的count是个0
while (count > 0) {
dataModel.removeRow(0);
}
while (rs.next()) {
Vector<String> v = new Vector<String>();
for (int i = 1; i <= rsmdCount; i++) {
v.add(rs.getString(i));
}
dataModel.addRow(v);
}
table.setModel(dataModel); //就差那个设置滚动条了。 //开始吧jtable放到那个jscroll中。
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); //自动设置宽度
table.setEnabled(false);
JScrollPane scrollPane2 = new JScrollPane(table, ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED, ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
scrollPane2.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
f.add(scrollPane2);
f.setSize(1024, 500);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
} catch (SQLException e) {
}
}
public static Connection getConn() {
String url = "jdbc:sqlserver://192.168.1.237:1433;DatabaseName=kh";
String username = "sa";
String password = "zl1110";
Connection conn = null;
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(url, username, password);
} catch (ClassNotFoundException | SQLException ex) {
System.out.println("ERROR:" + ex.getMessage());
}
return conn;
}
}
2019-06-07 git stash
git stash
git checkout dev
git stash apply stash@{0}
2019-06-25 一些知识
- Linux下的SVN服务器搭建
- SCP 协议已经过时,不灵活且不易修复,OpenSSH 官方建议使用更现代的协议进行文件传输,如 sftp 和 rsync。
- CompletableFuture
- 深度系统清空回收站
rm -rf ~/.local/share/Trash/files/*
- 启动ss-local
systemctl start shadowsocks-libev-local@client.service
- 启动mysql容器
docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql:5.7 --sql-mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
- 将oracle驱动包上传到私库和本地库
mvn deploy:deploy-file -DgroupId=com.oracle \ -DartifactId=ojdbc8 -Dversion=18.3.0.0.0 -Dpackaging=jar \ -Dfile=ojdbc8.jar \ -Durl=http://ip:9010/nexus/content/repositories/thirdparty/ \ -DrepositoryId=snapshots
mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc8 -Dversion=18.3.0.0.0 -Dpackaging=jar -Dfile=ojdbc8.jar
- curl添加自定义header ```bash curl http://127.0.0.1:8085/system/callCommon/queryCollect.sp -H ‘signature_name: 119’ -H ‘signature_value: WnOG3OH0v7N5GIFy1VT5cA==’ -v
curl http://127.0.0.1:8080/callcenter/welcome.do -H ‘signature_name: 119’ -H ‘signature_value: WnOG3OH0v7N5GIFy1VT5cA==’ -v
* spring boot 强制使用外部配置文件 `java -jar myproject.jar --spring.config.location=config/application.yml`
```bash
qq@hello:/etc/shadowsocks-libev$ curl -X OPTIONS http://127.0.0.1:8085 -I
HTTP/1.1 200 OK
Date: Tue, 14 May 2019 01:22:24 GMT
Allow: GET,HEAD,POST,OPTIONS
Content-Length: 0
Server: Jetty(9.4.18.v20190429)
w4G-in5u3SH75RoB3VZIX8htiZgw4ELilwvPcHAIQWfwfXv5n0IHDp5hv
1BM3+H1XygMtiE0-JBgacjE9tz33sIh542EmsGs1yg638UxVfmWqNLqu-
Zw91XxNEiZF7DC7-iV1XbSfsgxI8Tvqr-ZMTxlGCJU+2YLveAc-YXs8ci
RTtssts7leEbJ979H5v+G0sw-FwP9bjvE4GCJ8oj+jtlp7wFmpVdzovEh
v5Vg3dMqhqTiQHKfmHjYbb0o5OUxq0jOWxg5NKim9dhCVF+avO6mDeRNc
OYpl7BatIcd6tsiwdhHKRnyGshyVEjSgRCRY11IgyvdRPnbW8UOVULuTE
Beyond Compare4 key
#删除本地及远程的master分支.
git branch -D master //删除本地master分支
git push origin :master //删除远程master分支
#切换到saas_1.0.0分支,然后再新建本地master分支
git checkout saas_1.0.0
git checkout -b master
#把本地master分支推送到远程
git push origin master:master
#放弃本地修改
git reset --hard
- 将文件夹打包成zip
zip -r xxx.zip foldername
- ssh免密登录
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.9.110
- centos7防火墙
systemctl status firewalld.service
systemctl stop firewalld.service
#开机禁用防火墙自启命令
systemctl disable firewalld.service
#启动:
systemctl start firewalld.service
#防火墙随系统开启启动
systemctl enable firewalld.service
- nodejs启动webserer
var http = require('http');
http.createServer(function (request, response) {
if(request.url == "/json"){
response.writeHead(200, {'Content-Type': 'application/json'});
var data = {
"name":"nodejs",
"value":"stone"
};
response.end(JSON.stringify(data));
}else{
console.log(request.ServerRequest);
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}
}).listen(9010,'0.0.0.0');
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
- nc网络测试脚本 window bat文件
rem 网络测试 使用netcat
nc -v -n -w 10 -z 132.90.153.197 80
nc -v -n -w 10 -z 132.90.153.19 81
nc -v -n -w 10 -z 132.90.153.7 8082
nc -v -n -w 10 -z 132.90.153.7 8081
pause
- nc网络测试脚本 linux
#!/usr/bin/env bash # 生产环境对数据库的测试 包括实例和scan 使用Ncat 非 netcat nc -n -w 3 132.77.255.88 1526 < /dev/null && echo "132.77.255.88 1526 tcp port ok" nc -n -w 3 132.77.255.85 1526 < /dev/null && echo "132.77.255.85 1526 tcp port ok" nc -n -w 3 132.77.255.87 1526 < /dev/null && echo "132.77.255.87 1526 tcp port ok"
- mysql指定socket启动
/home/mysql/mysql-5.7.23/bin/mysql -uroot -p --socket=/home/mysql/mysql-5.7.23_data/mysql.sock
- Git强制拉取覆盖本地 Pull force
git fetch --all
git reset --hard origin/master
git pull
单条执行
git fetch --all && git reset --hard origin/master && git pull
- 检测 MySQL 是否宕掉,如果宕掉则启动
#!/bin/bash
result=`/usr/bin/mysqladmin ping`
expected='mysqld is alive'
if [[ "$result" != "$expected" ]]
then
echo "It's dead - restart mysql"
# email subject
SUBJECT="[MYSQL ERROR] - Attempting to restart service"
# Email To ?
EMAIL="info@endyourif.com"
# Email text/message
EMAILMESSAGE="/tmp/emailmessage.txt"
echo "$result was received"> $EMAILMESSAGE
echo "when we were expected $expected" >>$EMAILMESSAGE
# send an email using /bin/mail
mail -s "$SUBJECT" "$EMAIL" < $EMAILMESSAGE
sudo /etc/init.d/mysql restart
fi
- 第一条:对于存量能力(含AOP。全业务),通过改造火重构等方式逐步下沉微服务,由B域能力开放平台纳管,并由B域能力开放平台对外开放,现有AOP、全业务平台,不再新增,改造接口。
-
管理节点,整合B、E、M、O、D全域、省分子公司等各类网关能力,实现全联通一点看全,形成统一标准、统一运营的联通一级能力商店,具备能力注册,订购,计量,分析等相关管理功能。
- ftp备份
[admin@localhost sh]$ cat back.sh
remote_ip=127.0.0.1
remote_user=admin
remote_password="000000"
remote_port=21
file_name=data_backup_`date "+%Y-%m-%d"`
lftp $remote_user:$remote_password@$remote_ip:$remote_port <<EOF
mkdir $file_name
cd $file_name
put /home/mysql/data/mysql_backup/dbfullbak_`date "+%Y-%m-%d"`.sql.gz
exit
by
EOF
cd /home/mongodb/backup/data`date "+%Y-%m-%d"`/monitor
mongodb_files=`find *`
for file in $mongodb_files
do
lftp $remote_user:$remote_password@$remote_ip:$remote_port <<EOF
cd $file_name
put $file
exit
by
EOF
done
/etc/init.d/nscd restart
https://chromereleases.googleblog.com/search/label/Stable%20updates?updated-max=2015-07-30T08:42:00-07:00&max-results=20&start=255&by-date=false
44.0.2403.157 44.0.2403.125 44.0.2403.107 44.0.2403.89
firefox esr安装java 的npapi链接
/usr/lib/mozilla/plugins
/home/qiaowh/qiao_opt/jdk1.6.0_45/jre/lib/amd64/libnpjp2.so
proxy_set_header Referer $http_referer;