info

动手造轮子:写一个日志框架

夙愿已清 提交于 2020-01-26 09:31:37
动手造轮子:写一个日志框架 Intro 日志框架有很多,比如 log4net / nlog / serilog / microsoft.extensions.logging 等,如何在切换日志框架的时候做到不用修改代码,只需要切换不同的 loggingProvider 就可以了,最低成本的降低切换日志框架的成本,处于这个考虑自己写了一个日志框架,为不同的日志框架写一个适配,需要用到什么日志框架,配置一下就可以了,业务代码无需变动。 V0 最初的日志强依赖于 log4net,log4net 是我使用的第一个日志框架,所以很长一段时间都在使用它来做日志记录,但是由于是强依赖,在想换日志框架时就会很难受,大量代码要改动,不符合开放封闭的基本原则,于是就有了第一个版本的日志。 V1 第一版的日志参考了微软的日志框架的实现,大概结构如下: public interface ILogHelperLogFactory { ILogger CreateLogger(string categoryName); bool AddProvider(ILogHelperProvider provider); } public interface ILogHelperLogger { bool IsEnabled(LogHelperLogLevel logLevel); void Log

第3章 Python垃圾回收

只愿长相守 提交于 2020-01-26 05:40:26
Python 垃圾回收机制 计数引用, Python 中一切皆对象。因此,你所看到的一切变量,本质上都是对象的一个指针,计数引用就是这个指针。 那么,怎么知道一个对象,是否永远都不能被调用了呢? 就是当这个对象的引用计数(指针数)为 0 的时候,说明这个对象永不可达,自然它也就成为了垃圾,需要被回收。 import os import psutil 1、显示当前 python 程序占用的内存大小 import os import psutil #显示当前 python 程序占用的内存大小 def show_memory_info(hint): pid = os.getpid() p = psutil.Process(pid) info = p.memory_full_info() memory = info.uss /1024 /1024 print('{} memory used:{}MB'.format(hint,memory)) def func(): show_memory_info('initia') #global a #局部变量,但函数调用结束,a会被释放,所占用内存会被释放 a = [i for i in range(10000000)] show_memory_info('after a created') func() show_memory_info(

get computer system mac info in javascript

孤者浪人 提交于 2020-01-26 01:16:13
get computer system mac info in javascript Q: how to using js get computer system mac information? A: Just No Way! https://stackoverflow.com/questions/3385/mac-addresses-in-javascript https://www.codingforums.com/javascript-programming/299234-how-get-mac-address-client-machine-using-javascript-all-browsers.html webassembly webassembly ??? how to using webassembly get compurt system mac infos? https://www.wikihow.com/Find-the-MAC-Address-of-Your-Computer https://stackoverflow.com/questions/909555/how-can-i-get-the-assembly-file-version https://ist.mit.edu/hardware/apple C https://superuser.com

Spark submit提交求PI

一个人想着一个人 提交于 2020-01-25 21:50:40
一. spark提交任务方式: 1.第一种方法:spark-submit:提交任务的,使用spark Demo 求PI,蒙特卡洛求PI(圆周率) [root@bigdata111 spark-2.1.0-bin-hadoop2.7]# ./bin/spark-submit --master spark://bigdata111:7077 --class org.apache.spark.examples.SparkPi /opt/module/spark-2.1.0-bin-hadoop2.7/examples/jars/spark-examples_2.11-2.1.0.jar 1000 结果: 20/01/21 11:16:26 INFO TaskSetManager: Starting task 997.0 in stage 0.0 (TID 997, 192.168.1.122, executor 1, partition 997, PROCESS_LOCAL, 6029 bytes) 20/01/21 11:16:26 INFO TaskSetManager: Finished task 995.0 in stage 0.0 (TID 995) in 11 ms on 192.168.1.122 (executor 1) (996/1000) 20/01/21 11:16

怎么截取倒数第二个某个特定字符之前的字符串

拥有回忆 提交于 2020-01-25 20:21:05
原始的字符串:String str="E:/info/001/1-1/info/1578390012953/11/o_1dtvikv0l108gq8n124v24q1gkp5f.pdf"; 预期结果:String str="E:/info/001/1-1/info/1578390012953/"; 测试: @Test public void test(){ String path="E:/info/001/1-1/info/1578390012953/11/o_1dtvikv0l108gq8n124v24q1gkp5f.pdf"; int length = path.lastIndexOf("/"); String filepath = path.substring(0,path.lastIndexOf("/",length-1)+1); System.out.println("---1--"+filepath); } 来源: CSDN 作者: sunshine_369 链接: https://blog.csdn.net/sunshine_369/article/details/103910698

mysql索引的使用

为君一笑 提交于 2020-01-25 18:11:24
什么是索引?为什么要建立索引?索引分类?索引的使用? 转载SQL(五) MySQL中的索引详讲 一、索引介绍:   索引用于快速找出在某个列中有一特定值的行。不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大查询数据所花费的时间就越多。如果表中查询的列有索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。   例如:有一张person表,其中有2W条记录,记录着2W个人的信息。有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息。   如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止。   如果有了索引,那么会将 Phone 字段,通过一定的方法进行存储,好让查询该字段上的信息时,能够快速找到对应的数据,而不必在遍历2W条数据了。其中MySQL中的索引的存储类型有两种:BTREE、HASH。 也就是用树或者Hash值来存储该字段,更详细的查找逻辑就需要会算法的知识了。我们现在只需要知道索引的作用,功能是什么就行。 二、索引优缺点: 优点:   1、所有的MySql列类型(字段类型)都可以被索引,也就是可以给任意字段设置索引。   2、大大加快数据的查询速度。 缺点:   1、创建索引和维护索引要耗费时间,并且随着数据量的增加所耗费的时间也会增加。  

Java Scoket编程

时光毁灭记忆、已成空白 提交于 2020-01-25 10:23:13
Java Scoket编程 转自http://www.cnblogs.com/futao123/p/5068632.html 爱海滔滔 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。 在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。 而TCP层则提供面向应用的可靠(tcp)的或非可靠(UDP)的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。 目前较为流行的网络编程模型是客户机/服务器(C/S)结构。 即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提 出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客 户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也 能及时得到服务。 二,两类传输协议: TCP 和 UDP   TCP 是 Tranfer Control Protocol 的 简 称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须 建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时

文件子系统-基础01

☆樱花仙子☆ 提交于 2020-01-25 05:12:24
扩展小知识 https://blog.csdn.net/gatieme/article/details/51577479 initcall机制分析 https://www.cnblogs.com/downey-blog/p/10486653.html rootfs的挂载过程 https://www.xuebuyuan.com/725955.html 详细文件系统初始化过程2 https://www.cnblogs.com/wuchanming/p/3769727.html 文件系统学习 https://www.cnblogs.com/zhiliao112/p/4067833.html 文件系统各数据结构之间的关系 https://blog.csdn.net/sunna346867721/article/details/84950355 Linux内核中current指针作为全局变量 kernel4.14/include/asm-generic/current.h # include <linux/thread_info.h> # define get_current() (current_thread_info()->task) # define current get_current() kernel4.14/arch/arc/include/asm/thread_info.h

hadoop 开发&调试

怎甘沉沦 提交于 2020-01-25 04:45:42
写好的hadoop任务打成jar后,可以在服务器上用命令hadoop jar 提交。但开发阶段总不能一直用这种方式来调试,最好是在本机的ide 上可以直接debug。 如果在wiindow上配置一套开发调试环境,说实话真是觉得很不爽。为了以后方便,整理了一下windows 下hadoop开发环境的配置和调试过程。 首先本地下载一个和服务器相同版本的hadoop安装包。 然后配置一个HADOOPHOME环境变量 还要去网上下载window的工具包,需要有下面两个文件。 下载的时候要注意,如果你是安装的32位Jdk 那么下32位的工具包。 把下后的两个文件拷贝到HADOOPHOME bin目录下。 到这里配置还没有完,除了上面几个配置外,不同的场景还需要不同的配置。(我也是很无语)。 为了便于区分,接下来,我将列出本地Hadoop开发调试的四种场景。 1,本机访问Hdfs数据 如果只是访问远程hdfs目录和文件,需要有 %HADOOP_HOME% ,还有 %HADOOP_HOME%\bin \winutils.exe就可以了。 另外运行的时候会有访问权限的问题。主要是纠结hadoop 服务器的用户名和你本地机器用户名不一样。 解决办法有两种 方法1:hdfs-site.xml 加上如下配置,重启。 <property> <name>dfs.permissions</name>

scala spark-streaming整合kafka (spark 2.3 kafka 0.10)

柔情痞子 提交于 2020-01-25 00:54:34
Maven组件如下: <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-streaming-kafka-0-10_2.11</artifactId> <version>2.3.0</version></dependency> 官网代码如下: /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache