Other

Mysql-Sqlserver 时间戳 笔记记录

 SqlServer 字符串转时间格式类型   SELECT CONVERT(varchar(100),ISNULL(Max(Dates), '1900-01-01') ,20) as DistriCount FROM Table--Name 1.sqlserver 日期转时间戳,取到秒,十位 select DATEDIFF(s,'1970-01-01 00:00:00',getdate()) 2.sqlserver 时间戳转日期 select DATEADD(S,1528380035,'1970-01-01 00:00:00') 3.mysql日期转时间戳,取到秒,十位 select UNIX_TIMESTAMP(now()) 4.mysql时间戳转日期 SELECT FROM_UNIXTIME(1528351506, '%Y-%m-%d %H:%i:%S')   

力扣49(java)-字母异位词分组(中等)

题目: 给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。 字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。  示例 1: 输入: strs = [eat, tea, tan, ate, nat, bat]输出: [[bat],[nat,tan],[ate,eat,tea]]示例 2: 输入: strs = []输出: [[]]示例 3: 输入: strs = [a]输出: [[a]] 提示: 1 <= strs.length <= 1040 <= strs[i].length <= 100strs[i] 仅包含小写字母 来源:力扣(LeetCode)链接:https://leetcode.cn/problems/group-anagrams著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 解题思路: 哈希表: 1.首先判断特殊情况,字符串数组为空就返回一个新数组; 2.字符串数组不为空,首先创建一个哈希表,然后将不同的字符串转换成字符数组,并按照字母顺序进行排序; 3.将排序后的字符串作为哈希表中的key值,判断哈希表中是否有当前key值,若不存在,则为新的异位词语,在map中创建新的键值对,然后将该字符串放在对应key的list中; 4.将字母异位词组成的集合作为哈希表的value值,返回map中所有键值对象构成的list。 代码:  

python 动态规划(背包问题和最长公共子串)

背包问题 现在要往一个可以装4个单位重量的背包里怎么装价值最高:A重量1个单位,价值15;B重量3个单位,价值20;C重量4个重量,价值30 使用动态规划填充空格   class SolutionBag: def valuableBag(self,optionalList,sizeBig): #创建网格 grid = [[0 for i in range(sizeBig+1)] for j in range(len(optionalList)+1)] #从行列序号1开始计数 column = 1 for v in optionalList.values(): optionalWeight,optionalPrice = v for row in range(sizeBig): if optionalWeight > row+1: grid[column][row+1] = grid[column-1][row+1] else: grid[column][row+1] = max(grid[column-1][row+1],optionalPrice+grid[column-1][row+1-optionalWeight]) column += 1 return grid #SolutionBag().valuableBag({A:(1,15),B:(3,20),C:(4,30)},4)  最长公共子串 在动态规划中,你要将某个指标最大化。在这个例子中,你要找出两个单词的最长公共子串。fish和fosh都包含的最长子串是什么呢 如何将这个问题划分为子问题呢?你可能需要比较子串:不是比较hish和fish,而是先比较his和fis 我们网格填充的方法来实现  #伪代码 #字母相同则左上方+1 if word1[i] == word2[j] : cell[i][j] = cell[i-1][j-1] +1 else: cell[i][j] = max(cell[i][j-1],cell[i-1][j])  python实现网格

【工具】yum&rpm

一:yum基本命令 yum update: 更新软件源 yum install: 安装指定的软件 yum remove: 删除指定的软件 二:rpm基本命令 rpm -qa: 查看所有的rpm软件包 rpm -qf: 查看一个文件属于哪个软件包 rpm -qi: 查看软件包有哪些文件  三:yum全部命令 yum check: 检查rpmdb的问题 yum check-update: 检查可用的软件升级 yum clean: 移除缓存数据 yum deplist: 列出软件依赖 yum distribution-synchronization: 同步安装软件到最新可用的版本 yum downgrade: 下载安装软件包 yum erase: 移除软件包 yum fs: ? yum fssnapshot: 查看镜像? yum groups: ? yum help: 查看帮助信息 yum history: 查看历史 yum info: 显示软件包详细信息 yum install: 安装软件 yum langavailable: 检查可用的语言包 yum langinfo: 查看语言包

Java NIO多线程服务器实现

模型原理图 BOSS线程(ServerSocketChannel)专门负责建立链接,然后将accept到的SocketChannel分发给多个Worker线程。Worker线程有多个,可以分摊来自多个Client的SocketChannel。Worker线程专门负责read和write。 NIO多线程服务器实现 server端实现 package niomultithreadserver; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.nio.charset.Charset; import java.util.Iterator; import java.util.concurrent.ConcurrentLinkedDeque; import java.util.concurrent.atomic.AtomicInteger; public class MultiThreadServer { public static void main(String[] args) throws IOException { // 设置boss线程的名称为boss Thread.currentThread().setName(boss); // 创建ServerSocketChannel ServerSocketChannel ssc = ServerSocketChannel.open(); /** * 1. ServerSocketChannel配置为非阻塞模式 * 2. selector通常都是和非阻塞channel进行搭配 * 非阻塞channel一旦感兴趣的事件,则可以通过selector.select()方法将事件追加到selector的selectedKeys中 */ ssc.configureBlocking(false); // 创建boss线程的selector,该selector专门监听accept事件 Selector boss = Selector.open(); // 将创建好的ServerSocketChannel和关注的accept事件注册到该selector SelectionKey bossKey = ssc.register(boss, 0, null); bossKey.interestOps(SelectionKey.OP_ACCEPT); // ServerSocketChannel和端口进行绑定 ssc.

centos下的nginx安装和配置

配置 1.资源路径 2.默认首页地址 http://ip 访问index.html 资源都要放在/data/www 下 server { listen 80 default_server; listen [::]:80 default_server; server_name _; root /data/www; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { index index.html index.htm; } error_page 404 /404.html; location = /40x.html { } error_page 500 502 503 504 /50x.html; location = /50x.html { } }

vs linux远程编译 pthread 坑

连接远程服务器,填完密码以后要下载标头 安装gcc(一般centos自带),gdb(yum install gdb),g++(yum install gcc gcc-c++)进入centos后直接安装 pthread在调试的时候需要多写一句命令,所以远程vs需要在链接器库依赖选项多设置一下pthread  

Docker—基础之Linux Namespace

Docker 网络名称空间概念:为了支持网络协议栈的多个实例,linux在网络栈通过网络名称空间将独立的协议栈隔离到不同的网络名称空间。处于不同网络名称空间的网络栈是完全隔离的,彼此之间无法通信。通过对网络资源的隔离,就能在一个宿主机上虚拟多个不同的网络环境。 Docker正是利用网络名称空间特性,实现不同容器之间的网络隔离。Docker容器中各类网络栈都是Docker Daemon在启动时自动创建和配置的。 Veth设备: 由于网络名称空间代表一个独立的协议栈,所以他们是完全隔离的,彼此无法通信。 Veth设备对,注意:这里说的是设备对,即是成对出现的;其中一个作用就是打通了相互看不到的协议栈之间的壁垒,它像一条管子,将两个不同的网络名称空间连接起来实现通信。 在docker容器中,veth是连接容器与宿主机通信的重要桥梁, 网桥: 类似于二层交换机原理,利用MAC地址寻址,如果在MAC表存在,则转发,反之广播。 linux内核通过若干个网络桥接设备实现桥接,这个虚拟设备可以绑定若干个以太网接口设备,从而将它们桥接起来,这个网桥与其他的设备不同,最明显特性是它可以有一个IP地址。 Docker网络类型:  - host  - container模式(容器共享网络名称空间)  - none  - bridge 在bridge模式下,Docker启动会创建一个虚拟网桥Docker0,然后给Docker0分配一个子网。由Docker0创建的每一个容器,都会创建一个虚拟以太网设备(Veth设备对),一端关联Docker0,一端关联容器内部eth0,然后在Docker0所在的网段分配容器一个地址。 在同一台主机,不同容器之间通过即可Docker0桥接直接通信,不同主机需要映射宿主机端口,由宿主机网卡转发Docker0,然后转发容器通信。   Docker通过namespace及cgroup等来提供容器的资源隔离与安全保障等,下面来看是怎么实现的。 docker启动会在linux以守护进程运行 ]# ps -ef | grep docker root 1128 1 3 May11 ? 02:33:12 /usr/bin/dockerd root 1262 1128 0 May11 ? 00:37:17 containerd --config /var/run/docker/containerd/containerd.toml --log-level warn root 2494 1262 0 May11 ? 00:00:20 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/34e4b348f161a741dbfe734561d5218addb793c74696b7bd10d517a5b6741751 -address /var/run/docker/containerd/containerd.sock -containerd-binary /usr/local/bin/containerd -runtime-root /var/run/docker/runtime-runc   通过pstree查看进程守护关系

Python | 类和对象

一、类与对像的创建1. 类的组成类属性、实例方法、静态方法、类方法 Class Student: pass Student为类的名称,每个单词的首字母大写,其余小写 直接写在类里的变量,称为类属性 实例方法 def eat(self): print(吃)  静态方法 @staticmethoddef method(): print(staticmethod进行修饰为静态方法,不能使用self) 在类之外定义的称之为函数,在类之内定义的称之为方法静态方法进行修饰,不能使用self 类方法 @classmethoddef cm(cls): print(classmethod进行修饰为类方法,使用cls)  init初始化方法 def __init__(self,name,age): self.name = name self.age = age self.name称为实体属性,进行了一个赋值操作,将局部变量的name的值赋给实体变量  2. 对象的创建对象的创建又称为类的实例化语法:实例名 = 类名()意义:有了实例,就可以调用类中的内容 总结类属性:类中方法外的变量称之为类属性,被该类的所有对象所共享类方法:使用@classmethod修饰的方法,使用类名直接访问的方法静态方法:使用@staticmethod修饰的方法,使用类名直接访问的方法 Student.native_pace # 访问类属性Student.cm() # 调用类方法Student.sm() # 调用静态方法 class Student: native_pace='安徽' @classmethod def cm(cls): print(classmethod进行修饰为类方法,使用cls) @staticmethod def method(): print(staticmethod进行修饰为静态方法,不能使用self) print(Student.native_pace) Student.cm() Student.method()  面向对象的三大属性 封装:提高程序的安全性继承:提高代码的复用性多态:提高代码的可扩展性和可维护性 1.封装 封装:提高程序的安全性 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而隔离了复杂度 在python中没有专门的修饰符用于属性的私有,如果该属性不需要在类对象外部被访问,前面使用两个“_” class Student: def __init__(self,name,age): self.

Nginx: ngx_http_map_module

ngx_http_map_module Module ngx_http_map_module (nginx.org)          map $http_host $name { hostnames; default 0; ~map\.intrinsic.\w+ 1; *.canto.com 2; aa.intrinsic.io 3; bb.intrinsic.* 4; } map $http_user_agent $mobile { default 0; ~*Chrome 1; } server { listen 80; listen [::]:80; server_name vend.intrinsic.io *.intrinsic.io; root /usr/share/nginx/html; error_log /var/log/nginx/error.log debug; rewrite_log on; location / { return 202 $name:$mobile\n; } error_page 404 /404.html; location = /404.html { } error_page 500 502 503 504 /50x.