- 博客(43)
- 收藏
- 关注
原创 SQL Server中用APPLY作成max(m, n)而非m*n的表连接效果
众所周知,JOIN只能造成m*n的表连接效果。但有的时候,我需要的仅仅是将两个表列举在一起,即造成max(m,n)的效果。举个例子:有两张表要连接在一起,表A的结构如下图所示: 表B的结构如下图所示: 现在,我们想要将两张表连接成如下图所示的效果: 也就是,我们只想先按照合同号,找出两张表中同一个合同的数据,然后将两张表的列合并起来。表A列在左边,表B列在右边。这就是max(m,n)的效果,m
2016-07-11 15:47:54
722
原创 局域网机器间传输大文件,文件共享是正路
用远程桌面登录登录局域网内另一台服务器,想在这台远程服务器上安装VS2010,安装文件共有两个,一个是2.49G的SW_DVD9_VS_Premium_2010_ChnSimp_Core_MLF_X16-76667,一个是1.48G的SW_DVD5_NTRL_Visual_Studio_2010SP1_MultiLang_FPP_VL_MLF_X17-40329。想都没想,就复制粘贴。结果,1.48
2016-07-11 11:51:27
1515
原创 Spring Data Repository有趣的定义query方法
学习了Spring的一个小tutorial: Accessing Data with GemFire。我们为自定义的数据对象建立Repository,作为管理数据对象的接口。通常,我们继承Spring框架的CrudRepository接口,它为我们的Repository提供了基本的CRUD(增删改查)功能。 自定义的Repository如下:public interface PersonRepos
2016-07-05 16:20:52
9898
原创 SQL Server追踪StoredProcedure(存储过程)执行语句
VS上报出SqlException在系统上做一操作,需要在数据库上操作,但报出SqlException。如下图在下方的自动窗口中,可以找到当前执行的存储过程名称,以及执行这个存储过程所使用的参数的值。从上图可以看到,这个存储过程的名字是”SP_COM_APPLYAPPLICATION”。此时四个参数的值如下:@APPLYID : SQZL062016042000000003@APPLYTYPEID
2016-04-20 11:25:02
6149
原创 TexLive下使用resumecls中/英文简历模板(Ubuntu 12.04)
同学推荐了一个LaTeX的中/英文简历模板resumecls,使用很简单,并且作者提供了例子resumecls-example。我成功在TexLive上编译成功了中/英文简历,之所以写此文,都是因为在编译中文简历时遇到的两个问题。Ubuntu 12.04 默认安装的TexLive(full)不含ctex初次编译中文简历xelatex resume-zh.tex 报错:I can't find fil
2015-12-21 16:38:32
4797
原创 使用AngularJS时解决的一些小问题
1. 设置select的ng-model,但未显示初始选项解决方法:在ng-options中加上track by语句。 如:<select class="form-control" ng-model="customerInfo.staffInCharge" ng-options="staffInCharge.name for staffInChar
2015-11-19 14:43:47
909
原创 字符串的排列
题目:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 结果请按字母顺序输出。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。递归是个容易想到的思路,每个递归,我决定一个位置该放那个字符。然后想,这个递归函数,我需要哪些输入? 1. 一个排
2015-10-06 17:12:13
431
原创 复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点)。第一步,只按照next域复制链表; 第二步,按next域同步遍历原始链表和新链表,每访问到原始链表的一个非空节点p2(此时访问到新链表上的clone2节点),找到它的random域指向的节点pRandom; 然后再按next域从头同步遍历原始链表和新链表,当原始链表上抵达pRandom
2015-10-06 09:51:24
423
原创 顺时针打印矩阵
题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.思路:用一个标记矩阵记录走过的点。有四种走的可能方向:Right: if I can go right and go down, I g
2015-10-06 08:52:17
292
原创 树的子结构
题目:输入两颗二叉树A,B,判断B是不是A的子结构。有两个任务,第一是比较B树和A的以某个根节点开始一个局部树是否完全相等(isSub()),第二是遍历A(HasSubtree())。代码如下:public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root2) { if(root1=
2015-10-05 23:25:21
505
原创 调整数组顺序使奇数位于偶数前面
题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。思路:使用了两个指针,start指向第一个偶数,end指向最后一个奇数,这样可以优化重排序的范围,只有当相邻两个元素,左边是偶数,右边是奇数时才交换。代码如下:public class Solution { publ
2015-10-05 21:32:01
359
原创 二维数组的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。类似二分查找,我们每次选择一个中心元素a[t1][t2],然后我们可以将这个数组分割成A、B、C、D四块。 A B C D 若
2015-10-05 16:56:32
335
原创 由前序遍历和中序遍历重建二叉树
唯一的难点就是确定当前节点的左子树的根节点和右子树的根节点分别在前序遍历数组的位置。例如先序遍历数组pre:1 2 3 4 5 6 7 中序遍历数组in: 3 2 4 1 6 5 71是当前根节点,它在pre中的位置pre_start = 0接着在in中找到1的位置,即分割点j = 3当前树根所囊括的in数组范围是in_start = 0;in_end = in.length-1;将in按j分
2015-10-05 16:45:22
499
原创 《MySQL技术内幕:InnoDB存储引擎》第2版笔记
第1章 MySQL体系结构和存储引擎1.1 定义数据库和实例在MySQL数据库中,数据库文件可以是fm、MYD、MYI、ibd结尾的文件。MySQL数据库由后台线程以及一个共享内存区组成。MySQL被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程架构的)。在上述例子中使用了mysq
2015-09-24 20:24:55
4928
1
原创 《第一行代码Android》笔记
第1章 开始启程,你的第一行Android代码1.1 了解全貌,Android王国简介Android系统是基于Linux 2.6内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动、音频驱动、照相机驱动、蓝牙驱动、Wi-Fi驱动、电源管理等。另外Android运行时库还包含了Dalvik虚拟机,它使得每一个Android应用都能运行在独立的进程当中,并且拥有一个自己的Dalv
2015-09-20 15:01:56
3930
原创 《Computer Networks》Fifth Edition中文版笔记
5.6 Internet的网络层模块开发。这条原则直接导致了协议栈的思想,每一层的协议完全独立于所有其他的协议。寻找好的而不是完美的设计。通常设计者有一个好的设计,但是它不能够处理一些怪异的特殊情况。设计者不应该乱改设计,而是坚持这个好的设计,将围绕着特殊情况而展开的工作负担转移到那些强烈要求的人身上。5.6.1 IPv4协议IP数据报头的传输从左到右并从上到下,Version字段的高序字节
2015-09-14 10:24:29
4539
原创 《Java Concurrency in Practice》中文版笔记
第1章 简介1.1 并发简史茶壶和面包机的生产商都很清楚:用户通常会采用异步方式来使用他们的产品,因此当这些机器完成任务时都会发出声音提示。1.2 线程的优势线程能够将大部分的异步工作流转换成串行工作流,因此能更好地模拟人类的工作方式和交互方式。线程还可以简化JVM的实现,垃圾收集器通常在一个或多个专门的线程中运行。因此,操作系统提供了一些高效的方法来实现多路I/O,例如Unix的sele
2015-09-12 22:44:36
5377
原创 《Data Structures and Algorithm Analysis in Java》Second Edition中文版笔记
第3章 表、栈和队列3.2 表ADT3.2.2 简单链表在表的前端添加项或删除第一项的特殊情形此时也属于常数时间的操作,当然要假设到链表前端的链是存在的。只要我们拥有到链表最后节点的链,那么在链表末尾进行添加操作的特殊情形(即让新的项成为最后一项)可以花费常数时间。因此,典型的链表拥有到该表两端的链。保留指向最后节点的节点的第3个链的想法行不通,因为它在删除操作期间也需要更
2015-08-31 16:42:25
2141
原创 《深入理解Java虚拟机》第2版笔记(完整)
第1章 走近Java1.2 Java技术体系Java程序设计语言、Java虚拟机、Java API类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。1.4 Java虚拟机发展史1.4.1 Sun Classic / Exact VMExact VM因它使用准确式内存管理而得名,即虚拟机可以知道内存
2015-08-22 01:17:05
3919
原创 《The Django Book 2.0》中文版笔记
第1章 介绍Django本质上来说,Django只不过是用python编写的一组类库。用Django开发站点就是使用这些类库编写python代码。学习Django的关键就是学习如何进行python编程并理解Django类库的运作方式。pip是一个以Python写成的软件包管理系统,他可以安装和管理python软件包。pip支持从PyPI上安装,PyPI上有所有的python包列表:https:/
2015-08-21 12:26:37
2644
原创 《Thinking in Java》Fourth Edition中文版笔记
第5章 初始化与清理在Java(和C++)里,构造器是强制重载方法名的另一个原因。既然构造器的名字已经由类名所决定,就只能有一个构造器名。如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际参数类型就会被提升。char型略有不同,如果无法找到恰好接受char参数的方法,就会把char直接提升至int型。如果传入的实际参数较大,就得通过类型转换来执行窄化转换。如果不这样做,编译器就
2015-08-16 22:55:36
2448
原创 对第14章类型信息中RegisteredFactories.java的理解
先摘录Factory.java和RegisteredFactories.java的部分代码(虚线分隔):package typeinfo.factory;public interface Factory<T>{ T create();}// ---------------------------------------------------------class Part {
2015-07-12 11:44:36
611
原创 适配器(Adapter)设计模式和接口实现完全解耦
这个例子来自《Java编程思想》第9章接口的第3节完全解耦。假设我们有一个接口Processor和一个类Apply:public interface Processor { ... }public class Apply { public static void process( Processor p ) { ... }}Apply.process()方法将Processor接口作为参
2015-07-03 21:56:06
1050
原创 使用BlockingQueue进行线程间通信(java)
我们可以使用管道进行线程间通信,Java IO中提供了PipedWriter类和PipedReader类让线程间通信,《Java编程思想》在21.5.5节提供了例子。但是,Java提供了更健壮和容易的方式,即阻塞队列BlockingQueue来解决所有线程间协作的问题。所以,我们可以用BlockingQueue来实现线程间通信,原理很简单,一个线程向队列中添加元素,而另一个线程从队列中获取元素。贴代
2015-06-29 20:58:41
926
原创 Android Studio从Eclipse工程导入时Failed to sync Gradle project
从Eclipse迁移到Android Studio很简单。File -> Import Project即可。但是我遇到这个问题 于是我火急火燎地在SDK Manager里把API 19全安装了。但没有解决。两个build.gradle文件工程中有两个build.gradle文件 它们作用域不同,上面一个是module level的,下面一个是top level的。由于我在SDK Mana
2015-06-13 23:08:00
1703
原创 Java命令行
Ubuntu下。我在/home/sen/JavaProgram 下写了CommandLine.javapublic class CommandLine { public static void main(String args[]){ for(int i=0; i<args.length; i++){ System.out.println("args[" + i
2015-06-07 15:09:23
480
原创 Leetcode: Transpose File (shell, awk)
考察awk。先贴代码(我把我内存超限的算法注释掉了):# Read from the file file.txt and print its transposed content to stdout.#!/bin/bash#i=1;#value=$(cat file.txt);#j=$(echo "$value" | awk 'NR==1{print NF}');#while [ $i -l
2015-05-28 17:36:11
563
原创 Leetcode: Sort List (Java)
要求时间复杂度是O(nlogn),空间是constant space。想一下,平均时间复杂度满足这个的只有快速排序,归并排序和堆排序。因为是单链表,排除快速排序。堆需要建树,我也排除。因而我选择归并排序。 1. 首先要讲链表在中间切开,为了在一次循环中找到第二个子链表的head,我设置了count用以搜寻表尾,secondhead用以指向第二个子链表的头,beforesecond用以指向secon
2015-05-27 14:15:48
376
原创 Leetcode: Evaluate Reverse Polish Notation (Java)
考察栈的基本操作。之所以还要写这一篇,是因为Java中Stack类是继承Vector的,这是不合理的,栈当然不应该有按index取值的功能!在Stack类文档里有这句话:A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementatio
2015-05-26 15:58:34
371
原创 Leetcode: Find Minimum in Rotated Sorted Array I & II (Java)
两道题,一道是无重复元素的有序数组,另一道是有重复元素的有序数组。虽然经过旋转,但是有序数组仍然应该使用二分查找。二分查找仍然是简单的递归思想。第二题的边界条件要多一些。第一题:public class Solution { public int findMin(int[] nums) { return findMinRange(nums, 0, nums.length-1)
2015-05-25 20:04:31
423
原创 Leetcode: Rotate Array (Java)
Java中数组复制不能直接使用赋值操作,赋值操作仅使同一个数组对象多了一个名称,对新名称的操作仍然在原数组对象上操作,容易出错。为了产生新的数组对象,可以使用Arrays类的copyOfRange方法。题目是这个。贴代码:import java.util.Arrays;public class Solution { public void rotate(int[] nums, int k)
2015-05-25 14:28:45
285
原创 Leetcode: Binary Tree Right Side View (Java)
树的题是最简单的,因为递归是最简单的一种思路。题目在这里。思路就是合并左子树和右子树各自返回的最右List。 贴代码/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeN
2015-05-25 11:22:53
494
原创 Leetcode: Add and Search Word - Data structure design (Java)
最近尝试完全脱离C++,转而只用java刷题。这是我用java做出的第一道树。题目在这里。说几点做题思路。 1. 暴力用Hashtable存单词,显然浪费空间,每个字母每个位次应该只存一次。暴力用Regex匹配,只适用于Hash字典。每个字母每个位次只存一次,在脑子里想一下,就能想到这就是要建一棵26叉树。 2. TreeNode除了字母值和大小为26的TreeNode数组外,还应包含一个整数m
2015-05-24 19:58:57
1190
原创 Matlab中实现hist2D功能
最近处理离散数据的时候,遇到这个问题:许多sample点(x, y)的值相同,因此在plot的时候会重合在一起,看不出出现的频次。因而我想到要实现一个hist2D.m函数。顾名思义,它就是一个二维统计,并用colormap的颜色深浅表示出来。我主要参考了stackoverflow上的这个回答。我在这里把我改过的代码贴出来并解释,因为毕竟我处理的是我的问题。先上图
2015-05-16 22:41:14
3940
原创 Django 1.7使用Migrations将模型应用到数据库
Django 1.7用Migrations替换了更早Django版本的数据库同步方式(syncdb),原因是syncdb只能用来向数据库里添加新的模型,但不能修改或删除数据库里已有的模型。由于djangobook这个优质的中译Django教程里使用的是老的同步方式,因而单提出来。仍以djangobook模型里所举的books这个app为例。只要你用的是Django 1.7版本,在books中就会自动
2015-03-28 21:42:47
1317
原创 Django配置并连接MySQL
安装MySQLsudo apt-get install mysql-server设置好你的root密码,假设root密码是abcd。新建数据库进入mysql的shell(需要输入root密码abcd):mysql -u root -p为你的Django项目新建一个数据库:CREATE DATABASE django_db;使用SHOW DATABASES;就会显示你已新建的django_db。安装M
2015-03-27 21:14:06
613
原创 Ubuntu上git push到GitHub可能会遇到的问题
SSH端口22被防火墙block起初按照Generating SSH Keys配置我的Ubuntu主机到GitHub间的SSH,但是在测试连接$ ssh -vT git@github.com时,出错:OpenSSH_5.9p1 Debian-5ubuntu1.4, OpenSSL 1.0.1 14 Mar 2012debug1: Reading configuration data /etc/ss
2015-03-24 14:16:12
681
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人