target

lintcode:搜索二维矩阵II

拥有回忆 提交于 2020-03-28 15:09:50
题目 搜索二维矩阵 II 写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。 这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。 样例 考虑下列矩阵: [ [1, 3, 5, 7], [2, 4, 7, 8], [3, 5, 9, 10] ] 给出target = 3 ,返回 2 挑战 要求O(m+n) 时间复杂度和O(1) 额外空间 解题 直接遍历,时间复杂度是O(MN) public class Solution { /** * @param matrix: A list of lists of integers * @param: A number you want to search in the matrix * @return: An integer indicate the occurrence of target in the given matrix */ public int searchMatrix(int[][] matrix, int target) { // write your code here if(matrix == null) return 0; int row = matrix.length; if(row ==0) return 0; int col =

centos7 远程桌面vnc

眉间皱痕 提交于 2020-03-28 13:42:46
Centos7 采用mini安装,如果想远程桌面,那就需要安装图形界面 # yum check-update # yum groupinstall "X Window System" # yum install gnome-classic-session gnome-terminal nautilus-open-terminal control-center liberation-mono-fonts # unlink /etc/systemd/system/default.target # ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target # reboot 下面开始安装: 1、安装tigervnc # yum install tigervnc-server -y 2、从VNC备份库中复制service文件到系统service服务管理目录 # cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service 3、修改配置文件 # vim /etc/systemd/system/vncserver@:1.service #改成root用户启动,配置文件看起来这样的 [Unit]

[刷题] LeetCode 167 Two Sum II

落花浮王杯 提交于 2020-03-28 09:30:01
要求 升序数组 找到两个数使得它们相加之和等于目标数 函数返回两个下标值 示例 numbers = [2, 7, 11, 15], target = 9 [1,2] index1 = 1, index2 = 2 思路 双重遍历(n2) 遍历+二分搜索(nlogn) 遍历,对撞指针(n) 代码 1 class Solution{ 2 public: 3 vector<int> twoSum(vector<int>& numbers, int target){ 4 5 int l = 0, r = numbers.size()-1; 6 while( l < r ){ 7 8 if(numbers[l]+numbers[r]==target){ 9 int res[2] = {l+1, r+1}; 10 return vector<int>(res,res+2); 11 } 12 else if(numbers[l]+numbers[r]<target) 13 l++; 14 else 15 r--; 16 } 17 throw invalid_argument("no solution."); 18 } 19 }; View Code 类似问题 125 Valid Palindrome 344 Reverse String 345 Reverse Vowels of a String

[Err] 1093 - You can't specify target table 'user' for update in FROM clause

跟風遠走 提交于 2020-03-28 08:16:48
例: UPDATE `X` SET A='' WHERE B IN ( SELECT B FROM X WHERE XXX ); 会出现查询错误,调整为如下即可:(红色为查询语句,黑色部分为新增) UPDATE `X` SET A='' WHERE B IN ( SELECT u.B FROM ( SELECT * FROM X WHERE XXX ) u ) ; 来源: https://www.cnblogs.com/fan-yuan/p/12585581.html

详解 Java 中的三种代理模式!

你离开我真会死。 提交于 2020-03-27 15:25:35
作者:岑宇 https://www.cnblogs.com/cenyu/p/6289209.html 代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法. 举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接连接明星,而是联系明星的经纪人,来达到同样的目的.明星就是一个目标对象,他只要负责活动中的节目,而其他琐碎的事情就交给他的代理人(经纪人)来解决.这就是代理思想在现实中的一个例子. 用图表示如下: 代理模式的关键点是:代理对象与目标对象.代理对象是对目标对象的扩展,并会调用目标对象. 1.1.静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象一起实现相同的接口或者是继承相同父类. 下面举个案例来解释: 模拟保存动作,定义一个保存动作的接口:IUserDao.java,然后目标对象实现这个接口的方法UserDao.java,此时如果使用静态代理方式,就需要在代理对象(UserDaoProxy.java)中也实现IUserDao接口.调用的时候通过调用代理对象的方法来调用目标对象. 需要注意的是

在现有工程中实施基于CTMediator的组件化方案

假装没事ソ 提交于 2020-03-27 12:43:28
国内业界大家对组件化的讨论从今年年初开始到年尾,不外乎两个方案:URL/protocol注册调度,runtime调度。 我之前批评过URL注册调度是错误的组件化实施方案,在所有的基于URL注册调度的方案中,存在两个普遍问题: 命名域渗透 因注册是不必要的,而带来同样不必要的注册列表维护成本 其它各家的基于URL注册的不同方案在这两个普遍问题上还有各种各样的其他问题,例如FRDIntent库中的FRDIntent对象其本质是鸡肋对象、原属于响应者的业务被渗透到调用者的业务中、组件化实施方案的过程中会产生对原有代码的侵入式修改等问题。 另外,我也发现还是有人在都没有理解清楚的前提下就做出了自己的解读,流毒甚广。我之前写过 关于CTMediator比较理论的描述 ,也有 Demo ,但惟独没有写实践方面的描述。我本来以为Demo就足够了,可现在看来还是要给一篇实践的文章的。 在更早之前,卓同学的swift老司机群里也有人提出因为自己并没有理解透彻CTMediator方案,所以不敢贸然直接在项目中应用。所以这篇文章的另一个目的也是希望能够让大家明白,基于CTMediator的组件化方案实施其实非常简单,而且也是有章法可循的。这篇文章可能会去讨论一些理论的东西,但主要还会是以实践为主。争取做到能够让大家看完文章之后就可以直接在自己的项目中顺利实施组件化。 最后

Vue2.0源码阅读笔记(二):响应式原理

夙愿已清 提交于 2020-03-27 11:45:22
  Vue是数据驱动的框架,在修改数据时,视图会进行更新。数据响应式系统使得状态管理变的简单直接,在开发过程中减少与DOM元素的接触。而深入学习其中的原理十分有必要,能够回避一些常见的问题,使开发变的更为高效。 一、实现简单的数据响应式系统   Vue使用 观察者模式 (又称 发布-订阅模式 )加 数据劫持 的方式实现数据响应式系统,劫持数据时使用 Object.defineProperty 方法将 数据属性 变成 访问器属性 。Object.defineProperty 是 ES5 中一个无法 shim 的特性,因此Vue 不支持 IE8 以及更低版本浏览器。   Vue源码中对数据响应式系统的实现比较复杂,在深入学习这部分源码之前,先实现一个较为简单的版本更有助于后续的理解。代码如下所示: let uid = 0 // 容器构造函数 function Dep() { // 收集观察者的容器 this.subs = [] this.id = uid++ } Dep.prototype = { // 将当前观察者收集到容器中 addSub: function(sub) { this.subs.push(sub) }, // 收集依赖,调用观察者的addDep方法 depend: function() { if(Dep.target){ Dep.target.addDep(this)

Spring AOP面向切面编程

独自空忆成欢 提交于 2020-03-27 10:59:28
目录 1.AOP概览 2.Spring AOP的使用举例 PointCut切入点 Advice通知 3.Spring AOP的实现原理 3.1运行时织入 3.1.1代理模式 3.1.2 JDK动态代理 3.1.3 cglib动态代理 3.1.4 Spring如何创建代理bean ProxyFactoryBean的getObject()方法 getSingletonInstance()方法 createAopProxy() DefaultAopProxyFactory的createAopProxy()方法 getProxy(aopProxy) JdkDynamicAopProxy.getProxy()方法 ObjenesisCglibAopProxy.getProxy()方法 4.Spring AOP的实现原理 4.1 链式调用 4.1.1 职责链模式 4.1.1.1 V1 4.1.1.2 V2 4.1.2 Spring内部实现 1)拦截器链是如何生成的 2)拦截器链是如何链式调用的 3)Spring使用职责链模式实现拦截器链链式调用 5. ProxyFactory实现AOP 1.AOP概览 AOP(Aspect Oriented Programming),什么是面向切面编程? 1)AOP是一种编程范式,不是编程语言 编程范式概览 面向过程编程 面向对象编程 函数式编程 事件驱动编程

maven deploy的时候把源码也上传

我是研究僧i 提交于 2020-03-27 08:43:27
3 月,跳不动了?>>> maven 插件不够的时候, mvn deploy -DskipTests 执行完以后,只能把jar包部署上去。这时候引入的人下载不带源码,看不到注释之类的信息。 增加 maven-source-plugin 插件就可以了。 <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- 要将源码放上去,需要加入这个插件 --> <plugin> <artifactId>maven-source-plugin</artifactId> <version>3.0.1</version> <configuration> <attach>true</attach> </configuration> <executions> <execution> <phase>compile</phase> <goals>

Python多线程的简单实现(生产者消费者模型)

六眼飞鱼酱① 提交于 2020-03-27 03:09:15
1 __author__ = "JentZhang" 2 3 import time, threading, queue 4 5 q = queue.Queue(maxsize=10) # 声明队列 6 7 8 def Producer(name): 9 '''生产者''' 10 count = 1 11 while True: 12 q.put(count) # 往队列中添加数据 13 print("[%s] 生产了第%s包子\n" % (name, count)) 14 count += 1 15 time.sleep(3) 16 17 18 def Consumer(name): 19 '''消费者''' 20 while True: 21 i = q.get() # 从队列中取数据 22 print("====[%s] 吃了第%s个包子\n" % (name, i)) 23 time.sleep(1) 24 25 26 '''设置多线程''' 27 p = threading.Thread(target=Producer, args=("Jent",)) 28 c1 = threading.Thread(target=Consumer, args=("张三",)) 29 c2 = threading.Thread(target=Consumer, args=("李四",))