param

Simple MultiThread Safe Log Class

匿名 (未验证) 提交于 2019-12-03 08:36:05
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试): 由 翻译 强力驱动 问题: What is the best approach to creating a simple multithread safe logging class? Is something like this sufficient? How would I purge the log when it's initially created? public class Logging { public Logging () { } public void WriteToLog ( string message ) { object locker = new object (); lock ( locker ) { StreamWriter SW ; SW = File . AppendText ( "Data\\Log.txt" ); SW . WriteLine ( message ); SW . Close (); } } } public partial class MainWindow : Window { public static MainWindow Instance { get ; private set ; } public Logging Log

python Mysql数据库连接池组件封装(转载)

核能气质少年 提交于 2019-12-03 08:24:45
以前一直在用Java来开发,数据库连接池等都是有组件封装好的,直接使用即可,最近在尝试Python的学习,碰到了和数据库打交道的问题,和数据库打交道我们都知道,数据库连接池必不可少,不然要么就是程序异常不稳定,要么就是数据库莫名其妙挂了, 本篇博客主要是对数据库操作的简单封装,相当于一个DBHelper操作类 组件 Python中的数据库连接操作所需组件 pymysql:mysql的Python连接包 DBUtils:连接池组件 configparser:配置文件模块 mysql-connector-python:驱动包 以上模块都是必装组件,使用pip很轻松就安装 开始 组件的封装主要考虑到多种数据库、可配置的情况,因此我们的数据库相关信息不能使用硬编码的方式,需要将数据库放到配置文件中,这样和代码会有一个解耦,也不用频繁更改代码 代码 封装的类主要包含的基础方法: 提供查询的方法 分页查询的方法 插入数据 删除数据 更新数据 批量插入、删除、更新数据 配置文件 将数据库的相关信息写入db.conf配置文件中,配置文件如下: [master] # 数据库连接主机 host=192.168.0.212 # 数据库端口号 port=3306 # 用户名 user=root # 密码 password=123456 # 数据库名称 database=test # 数据库连接池最大连接数

Java动态代理

会有一股神秘感。 提交于 2019-12-03 07:34:20
特点:字节码随用随创建,随用随加载。(不同于装饰模式) 作用:不修改源码的基础上对方法增强 分类: 基于接口的动态代理 基于子类的动态代理 基于接口的动态代理: 涉及的类:Proxy;提供者:JDK官方 如何创建代理对象:使用Proxy类中的newProxyInstance方法 创建代理对象的要求:被代理类最少实现一个接口,如果没有则不能使用 newProxyInstance方法的参数: ClassLoader :它是用于加载代理对象字节码的,和被代理对象使用相同的类加载器 Class<?>[] :它是用于让代理对象和被代理对象有相同方法 InvocationHandler :它是让我们写如何代理,我们一般都是写一个该接口的实现类,通常情况下都是使用匿名内部类,此接口的实现类都是谁用谁写。 最主要的是去实现InvocationHandler 中的invoke方法。 public static void main(String[] args) { final Producer producer = new Producer(); IProducer iProducer = (IProducer) Proxy.newProxyInstance(Producer.class.getClassLoader(), Producer.class.getInterfaces(), new

thinkphp 输入变量

試著忘記壹切 提交于 2019-12-03 07:20:29
在Web开发过程中,我们经常需要获取系统变量或者用户提交的数据,这些变量数据错综复杂,而且一不小心就容易引起安全隐患,但是如果利用好ThinkPHP提供的变量获取功能,就可以轻松的获取和驾驭变量了。 大理石平台规格 获取变量 虽然你仍然可以在开发过程中使用传统方式获取各种系统变量,例如: $id = $_GET [ 'id' ]; // 获取get变量 $name = $_POST [ 'name' ]; // 获取post变量 $value = $_SESSION [ 'var' ]; // 获取session变量 $name = $_COOKIE [ 'name' ]; // 获取cookie变量 $file = $_SERVER [ 'PHP_SELF' ]; // 获取server变量 但是我们不建议直接使用传统方式获取,因为没有统一的安全处理机制,后期如果调整的话,改起来会比较麻烦。所以,更好的方式是在框架中统一使用I函数进行变量获取和过滤。 I方法是ThinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,用法格式如下: I('变量类型.变量名/修饰符',['默认值'],['过滤方法'],['额外数据源']) 变量类型是指请求方式或者输入类型,包括: 变量类型 含义 get 获取GET参数 post 获取POST参数 param 自动判断请求类型获取GET

基于Quartz2.3.3的帮助类 QuartzHelper

不打扰是莪最后的温柔 提交于 2019-12-03 06:46:33
using System; using System.Collections.Generic; using Quartz; using Quartz.Core; using Quartz.Impl; using Quartz.Impl.Triggers; using Kmmp.Core.Models; namespace Kmmp.Core.Helper { /// <summary> /// Author:tiny.wu /// Date:2016-04-01 /// Desc:定时任务 /// </summary> public class QuartzHelper { private static readonly ISchedulerFactory schedulerFactory; static QuartzHelper() { System.Collections.Specialized.NameValueCollection properties = new System.Collections.Specialized.NameValueCollection(); properties["quartz.threadPool.threadCount"] = AppSettingHelper.GetInt("quartz.threadPool.threadCount",

实现三行代码获取URL参数

眉间皱痕 提交于 2019-12-03 06:34:39
function urlParam(){ const param = {}; location.search.replace(/([^&=?]+)=([^&]+)/g,(m,$1,$2)=> {param[$1] = $2}); return param; } 主要用到了正则替换的$1,$2...的特性以及正则 g 遍历的特性,循环生成了param对象 来源: oschina 链接: https://my.oschina.net/u/3237686/blog/3136166

JDBC封装工具类代码(JDBCUtil+BaseDao)

こ雲淡風輕ζ 提交于 2019-12-03 06:24:48
一、新建数据库的配置文件(db.properties) 注: 这里使用mysql数据库。 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf-8 jdbc.username=root jdbc.password=1234 二、创建JDBC工具类(JDBCUtil.java) import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Properties; /** * 使用JDBC进行数据库连接与关闭的工具类 * * @author XIAOHU * @since 2018-04-08 */ public class JDBCUtil { private static String driver; private static String

实现三行代码获取URL参数

戏子无情 提交于 2019-12-03 06:18:31
function urlParam(){ const param = {}; location.search.replace(/([^&=?]+)=([^&]+)/g,(m,$1,$2)=> {param[$1] = $2}); return param; } 主要用到了正则替换的$1,$2...的特性以及正则 g 遍历的特性,循环生成了param对象 来源: oschina 链接: https://my.oschina.net/u/3237686/blog/3136166

如何简单高效的学会Smali语法?

隐身守侯 提交于 2019-12-03 04:08:15
Q1:Smali是什么。 Smali是一种宽松式的Jasmin/dedexer语法. 简单来说就是我们用java写的代码编译成class打包成dex文件后使用baksmali程序逆向回来的一种语法。 Q2:为什么要学习Smali。 首先,提到smali就不得不说逆向。早在还没有android之前,各大平台和语言上就有对应的逆向一说。那么到目前为止,逆向一个apk通常是安全工程师(逆向工程师)和做破解等恶意分子因为某些利益在做(apk二次打包插入广告、破解收费应用、恶意代码植入、剽窃api等)。 技术是一把双刃剑,怎么用在人。而不在技术本身上。那么我们说为什么应用层开发者也要学smali呢?我能想到以下几点供参考。 1. 借鉴 当我们发现其他应用有一个很牛逼功能,而我们想不明白如何实现的时候。拿不到源码可以选择逆向。 2. 安全 我们写的app需要考虑安全性,但是我们可能只知道混淆和第三方加固,需要明白别人是怎么破解我们的应用。 3. 适配 当我们发现api在某些手机上被弃用,而其他应用或系统应用又能实现该功能的时候。关于这点我之前写过一篇 逆向小米做适配的文章 。 喂,差不多够了吧?还不能打动你学吗?给你升职加薪怎么样? :) 噗,坏蛋!!!,我学 我学,还不行吗? Q3:Smali难不难? 不难。也许你很早之前看过一些文章。或者也常用一些工具去打开反编译后的代码

Excel-Boot(一款Excel导入导出解决方案组成的轻量级开源组件)

杀马特。学长 韩版系。学妹 提交于 2019-12-03 03:57:16
Easy-POI 工具链接 Github:https://github.com/programmeres/easy-poi 码云:https://gitee.com/nw1992/easy-poi Easy-POI是一款Excel导入导出解决方案组成的轻量级开源组件。 (如果喜欢或愿意使用, 请star并且Watch本项目, 如果是企业使用, 请通过修改本文件的企业列表告诉我企业名称, 借此给我们鼓励及动力持续维护本项目。) 发现解决bug并已自测,pullRequest后,可以通过邮件告知我们(magic_app@126.com), 第一时间合并并且发布最新版本 使用企业列表: 功能简介 浏览器导出Excel文件(支持单/多sheet) 浏览器导出Excel模板文件 指定路径生成Excel文件(支持单/多sheet) 返回Excel文件(支持单/多sheet)的OutputStream, 一般用于将Excel文件上传到远程, 例如FTP 导入Excel文件(支持单/多sheet) 解决的问题 1.解决导出大量数据造成的内存溢出问题(支持分页查询数据库、采用poi官方推荐api(SXSSFWorkbook), 实现指定行数刷新到磁盘) 2.解决导入大量数据造成的内存溢出问题(分页插入数据库、采用poi官方推荐api(XSSF and SAX),采用SAX模式一行行读取到内存当中去)