一大波超链接即将袭来

Django认证流程

Python实现阶乘

Python文件处理

Python统计日志文件IP出现次数

JSON数据解析

JSON数据解析2

买卖股票的最佳时期

读取一个大文件比如500M,计算出每一个字的频率,分别把前十频率的求出来。

  1. def str_count(filename):
  2. f = open(filename,'r',encoding='utf-8')
  3. dic = {}
  4. while True:
  5. line = f.readline()
  6. if line:
  7. for s in line:
  8. if s in dic:
  9. dic[s]+=1
  10. else:
  11. dic[s]=1
  12. else:
  13. break
  14. result = sorted(dic.items(), key=lambda k: k[1], reverse=True)
  15. print(dic)
  16. print(result)
  17. str_count(r'C:\Users\Administrator\Desktop\text.txt')
  18. ----------------------英文单词频率
  19. def word_count(filename):
  20. f = open(filename,'r')
  21. dic = {}
  22. while True:
  23. line = f.readline()
  24. if line:
  25. line = line.replace(',','')
  26. line = line.replace('.','')
  27. line = line.replace('!','')
  28. line = line.replace(';','')
  29. line = line.replace('-','')
  30. str_list = line.split()
  31. for s in str_list:
  32. if s.lower() in dic:
  33. dic[s.lower()]+=1
  34. else:
  35. dic[s.lower()] = 1
  36. else:
  37. break
  38. result = sorted(dic.items(), key=lambda k: k[1], reverse=True)
  39. print(result)
  40. word_count(r'C:\Users\Administrator\Desktop\abc'
  41. r'.txt')

线程之间如何进行通信?

  1. 1、通过queue(队列),基于queue共享数据,使用 put() get() 操作来向队列中添加或者删除元素,实现线程之间的通信。
  2. 2、可以自己通过创建自己的数据结构(例如一个列表)来实现线程间通信,
  3. 如:threading.Condition()的notify方法,以及通过threading.Event对象
  4. 3、基于生产者、消费者实现线程之间的通信

三次登录

  1. count = 0 #计数器
  2. username = "aaa" #登录用户名
  3. userpassword = "asd" #登录密码
  4. f = open("aaa.txt","r")
  5. file_list = f.readlines()
  6. f.close()
  7. lock= []
  8. name = input("登录用户名:")
  9. for i in file_list:1
  10. line = i.strip("\n")
  11. lock.append(line)
  12. if name in lock:
  13. print("你的账户已锁定,请联系管理员。")
  14. else:
  15. if name == username:
  16. #如果密码连续输错了三次,锁定账号
  17. while count <3:
  18. password = input("登录密码:")
  19. if name == username and password == userpassword:
  20. print("欢迎%s!"%name)
  21. break
  22. else:
  23. print("账号和密码不匹配")
  24. count +=1
  25. else:
  26. print("对不起,您的账号连续输错三次密码已被锁定,请联系管理员。")
  27. f = open("aaa.txt","w+")
  28. li = ['%s'%username]
  29. f.writelines(li)
  30. f.close()
  31. else:
  32. print("用户名不存在,请输入正确的用户名。")

计算N天后的日期

  1. import datetime
  2. def get_day(y,m,d,n):
  3. the_date =datetime.datetime(y,m,d)
  4. result_date = the_date + datetime.timedelta(days=n)
  5. d = result_date.strftime("%Y-%m-%d")
  6. return d
  7. print(get_day(2018,3,25,1))

计算给定日期是该年的第多少天

  1. def count(year, month, day):
  2. count = 0
  3. # 判断该年是平年还是闰年
  4. if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
  5. print('%d年是闰年,2月份有29天!' % year)
  6. li1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  7. for i in range(month - 1):
  8. count += li1[i]
  9. return count + day
  10. else:
  11. print('%d年是平年,2月份有29天!' % year)
  12. li2 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  13. for i in range(month - 1):
  14. count += li2[i]
  15. return count + day
  16. if __name__ == "__main__":
  17. year = int(input('请输入年份:'))
  18. month = int(input('请输入月份:'))
  19. day = int(input('请输入日期:'))
  20. count = count(year, month, day)
  21. print('%d年%d月%d日是今年的第%d天!' % (year, month, day, count))

循环和递归实现二分查找

  1. while 循环实现二分查找
  2. def bin_search(data_list, val):
  3. low = 0 # 最小数下标
  4. high = len(data_list) - 1 # 最大数下标
  5. while low <= high:
  6. mid = (low + high) // 2 # 中间数下标
  7. if data_list[mid] == val: # 如果中间数下标等于val, 返回
  8. return mid
  9. elif data_list[mid] > val: # 如果val在中间数左边, 移动high下标
  10. high = mid - 1
  11. else: # 如果val在中间数右边, 移动low下标
  12. low = mid + 1
  13. return # val不存在, 返回None
  14. ret = bin_search(list(range(1, 100)), 66)
  15. print(ret)
  16. 递归实现二分查找
  17. def bin_search(li, val, low, high):
  18. if low <= high:
  19. mid = (low + high) // 2
  20. if li[mid] == val:
  21. return mid
  22. elif li[mid] > val:
  23. return bin_search(li, val, low, mid - 1)
  24. else:
  25. return bin_search(li, val, mid + 1, high)
  26. else:
  27. return
  28. li = list(range(1000))
  29. ret = bin_search(li, 555, 0, len(li) - 1)
  30. print(ret)

Python上下文管理器(Context Manager)

  1. 当我们需要创建一个上下文管理器类型的时候,就需要实现__enter____exit__方法,这对方法就称为上下文管理协议(Context Manager Protocol),定义了一种运行时上下文环境。
  2. Python中,可以通过with语句来方便的使用上下文管理器,with语句可以在代码块运行前进入一个运行时上下文(执行__enter__方法),并在代码块结束后退出该上下文(执行__exit__方法)。
  3. http://python.jobbole.com/82289/

括号匹配问题,把list维护成一个栈

  1. SYMBOLS = {'}':'{', ']':'[', ')':'('}
  2. SYMBOLS_L, SYMBOLS_R = SYMBOLS.values(), SYMBOLS.keys()
  3. def check(s):
  4. arr = []
  5. for c in s:
  6. if c in SYMBOLS_L:
  7. # 左符号入栈
  8. arr.append(c)
  9. elif c in SYMBOLS_R:
  10. # 右符号要么出栈,要么匹配失败
  11. if arr and arr[-1] == SYMBOLS[c]:
  12. arr.pop()
  13. else:
  14. return False
  15. return not arr
  16. print(check("3 * {3 +[(2 -3) * (4+5)]}"))
  17. print(check("3 * {3+ [4 - 6}]"))

常用正则表达式

  1. 邮箱
  2. ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
  3. 手机号
  4. ^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
  5. IP地址
  6. \b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

生成器相关习题

  1. 1.生成器函数:
  2. def demo():
  3. for i in range(4):
  4. yield i
  5. g=demo() # 生成器
  6. g1=(i for i in g) #生成器
  7. g2=(i for i in g1) #g2 生成器
  8. print(list(g1)) #[0,1,2,3]
  9. print(list(g2)) #[]
  10. 2.计算生成器函数返回值
  11. def add(n,i):
  12. return n+i
  13. def test():
  14. for i in range(4):
  15. yield i
  16. g=test()
  17. for n in [1,10]:
  18. g=(add(n,i) for i in g)
  19. print(list(g)) #[20, 21, 22, 23]

生产者消费者模型


  1. 程序中有两类角色:一类负责生产数据(生产者),一类负责处理数据(消费者);引入生产者消费者模型为了解决的问题是:平衡生产者与消费者之间的工作能力,从而提高程序整体处理数据的速度;如何实现:生产者<-->队列<——>消费者;生产者消费者模型实现类程序的解耦和。

如何防止sql注入

  1. sql注入:在sql语句中,如果存在'--'字符,则执行sql语句时会注释掉--字符后面的内容。凡有SQL注入漏洞的程序,
  2. 都是因为程序要接受来自客户端用户输入的变量或URL传递的参数,并且这个变量或参数是组成SQL语句的一部分。放置方式有:
  3. 1、使用预编译绑定变量的SQL语句 execute()
  4. 2.严格加密处理用户的机密信息
  5. 3.不要随意开启生产环境中Webserver的错误显示
  6. 4.使用正则表达式过滤传入的参数
  7. 5.字符串过滤
  8. 6.检查是否包函非法字符

连表操作的区别

  1. 1、交叉连接:不使用任何匹配条件生成笛卡尔积
  2. select * from employee,department
  3. 2、内连接:只连接匹配的行
  4. selcet employee.name,employee.age,department.name from employee inner join department on employee.dep_id = department.id
  5. 3、外连接之左连接:优先显示左表全部内容
  6. selcet employee.name,employee.age,department.name from employee left join department on employee.dep_id = department.id
  7. 4、外连接之右连接:优先显示右表全部内容
  8. selcet employee.name,employee.age,department.name from employee right join department on employee.dep_id = department.id
  9. 5、全外连接:显示左右两个表全部记录(mysql不支持full join),实现方式如下:
  10. select * from employee left join department on employee.dep_id = department.id
  11. union
  12. select * from employee right join department on employee.dep_id = department.id

如何求二进制中1 的个数

  1. def count1(a):
  2. '''
  3. 整数的二进制表达里有多少个1,复杂度为a的二进制长度。
  4. '''
  5. num = 0
  6. while a != 0:
  7. num += a & 1
  8. a >>= 1
  9. return num
  10. def count2(a):
  11. '''
  12. 整数的二进制表达里有多少个1,复杂度仅为1的个数
  13. '''
  14. num = 0
  15. while a != 0:
  16. a = a & (a - 1) # 就是这个操作,需要掌握,它的本质含义是抹去了0不考虑
  17. num += 1
  18. return num
  19. 运算符说明:http://www.runoob.com/python/python-operators.html
  20. https://blog.csdn.net/dongrixinyu/article/details/78877489

统计出现频率最高的词

  1. import os
  2. from collections import Counter
  3. sumsdata=[]
  4. for fname in os.listdir(os.getcwd()):
  5. if os.path.isfile(fname) and fname.endswith('.txt'):
  6. with open(fname,'r') as fp:
  7. data=fp.readlines()
  8. fp.close()
  9. sumsdata+=[line.strip().lower() for line in data]
  10. cnt=Counter()
  11. for word in sumsdata:
  12. cnt[word]+=1
  13. cnt=dict(cnt)
  14. for key,value in cnt.items():
  15. print(key+":"+str(value))

子网掩码有什么用


  1. 子网掩码(subnet mask)的作用实际上只是用来标识出某个IP地址哪部分是网络位的一段地址。

map等使用实例

  1. map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函数
  2. [1, 4, 9, 16, 25]
  3. map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]) # 提供了两个列表,对相同位置的列表数据进行相加
  4. [3, 7, 11, 15, 19]

list去重

  1. 1、直观方法
  2. li=[1,2,3,4,5,1,2,3]
  3. new_li=[]
  4. for i in li:
  5. if i not in new_li:
  6. new_li.append(i)
  7. print(new_li)
  8. 先建立一个新的空列表,通过遍历原来的列表,再利用逻辑关系not in 来去重。
  9. 总结:这样可以做出来,但是过程不够简单。但是此方法保证了列表的顺序性。
  10. 2、利用set的自动去重功能
  11. li=[1,2,3,4,5,1,2,3]
  12. li=list(set(li))
  13. print(li)
  14. 将列表转化为集合再转化为列表,利用集合的自动去重功能。简单快速。缺点是:使用set方法无法保证去重后的顺序。

modle中slugfield字段的用途

  1. 1slug:用于生成一个有意义(valid, meaninfulURL  参考(http://stackoverflow.com/questions/427102/what-is-a-slug-in-django)
  2. 比如:http://stackoverflow.com/questions/427102/what-is-a-slug-in-django  后面的“what-is-a-slug-in-django”就是经过slug后的产物
  3. 如何使用:
  4. 需要使用slugify功能:from django.utils.text import slugify
  5. 例子:slugify(value)  If value is "Joel is a slug", the output will be "joel-is-a-slug".
  6. 2SlugField:也是起到类似作用,只不过这个一般是后台直接添加时使用,比如:slug = models.SlugField(unique=True)   这样在后台就有个slug框,填写后,URL中就包含slug中的内容。
  7. https://www.cnblogs.com/ohmydenzi/p/5584846.html

SVN和git

  1. 1. Git是分布式的,SVN是集中式的,好处是跟其他同事不会有太多的冲突,自己写的代码放在自己电脑上,一段时间后再提交、合并,也可以不用联网在本地提交;
  2. 2. Git下载下来后,在本地不必联网就可以看到所有的log,很方便学习,SVN却需要联网;
  3. 3. Git鼓励分Branch,而SVN,说实话,我用Branch的次数还挺少的,SVN自带的Branch merge我还真没用过,有merge时用的是Beyond Compare工具合并后再Commit的;
  4. 4. Tortoise也有出Git版本,真是好东西;
  5. 5. SVNCommit前,我们都建议是先Update一下,跟本地的代码编译没问题,并确保开发的功能正常后再提交,这样其实挺麻烦的,有好几次同事没有先Updata,就
  6. Commit了,发生了一些错误,耽误了大家时间,Git可能这种情况会少些。

cookie和session区别


  1. cookie是把用户的数据写在用户本地浏览器上, 其他网站也可以扫描使用你的cookie,容易泄露自己网站用户的隐私,而且一般浏览器对单个网站站点有cookie数量与大小的限制。Session是把用户的数据写在用户的独占session上,存储在服务器上,一般只将sessionid存储在cookie中。但将数据存储在服务器对服务器的成本会高。session是由服务器创建的,开发人员可以在服务器上通过request对象的getsession方法得到session一般情况,登录信息等重要信息存储在session中,其他信息存储在cookie
  2. Cookie Session
  3. 储存位置 客户端 服务器端
  4. 目的 跟踪会话,保存用户偏好设置或用户名密码等 跟踪会话
  5. 安全性 不安全 安全
  6. session技术是要使用到cookie的,之所以出现session技术,主要是为了安全。

apache和nginx的区别


  1. https://www.cnblogs.com/wangzhipeng/p/7850717.html

常用推导式

  1. 列表推导式
  2. 字典推导式
  3. 集合推导式
  4. https://www.cnblogs.com/cenyu/p/5718410.html

闭包代码

  1. 闭包函数的实例
  2. outer是外部函数 ab都是外函数的临时变量
  3. def outer( a ):
  4. b = 10
  5. # inner是内函数
  6. def inner():
  7. #在内函数中 用到了外函数的临时变量
  8. print(a+b)
  9. # 外函数的返回值是内函数的引用
  10. return inner
  11. if __name__ == '__main__':
  12. # 在这里我们调用外函数传入参数5
  13. #此时外函数两个临时变量 a是5 b是10 ,并创建了内函数,然后把内函数的引用返回存给了demo
  14. # 外函数结束的时候发现内部函数将会用到自己的临时变量,这两个临时变量就不会释放,会绑定给这个内部函数
  15. demo = outer(5)
  16. # 我们调用内部函数,看一看内部函数是不是能使用外部函数的临时变量
  17. # demo存了外函数的返回值,也就是inner函数的引用,这里相当于执行inner函数
  18. demo() # 15
  19. demo2 = outer(7)
  20. demo2()#17
  21. https://www.cnblogs.com/Lin-Yi/p/7305364.html

python读取大文件20G

  1. with open(filename, 'r') as flie:
  2. for line in file:
  3. ....
  4. --------------
  5. text = linecache.getline(filename, 2) # 使用linecache模块
  6. https://www.cnblogs.com/wulaa/p/7852592.html

数据库引擎特点

  1. MyISAM:
  2. 有存储限制,表的定义语句,数据,索引分文件存储,分别为.frm文件,.MYDMyDate),.MYI文件(MyIndex),存储方式分静态表(默认),动态表,压缩表。静态表中表字段定长,存储速度快,容易缓存,出现故障容易恢复,但是空间浪费严重。动态表中表字段不定长,空间浪费小,但是崩溃不易恢复,频繁的删除和更新会产生大量的碎片,可以使用OPTIMIZE TABLE命令定期清理碎片。同时MyISAM存储殷勤不支持外键,也不支持事务处理,但是其优势为访问速度快,在使用中中,如果对事务完整性没有要求,或者数据库操作主要以Select或者Insert为主的应用基本上可以使用这种存储引擎,而且MyISAM存储殷勤在也是5.5版本之前MySQL默认的存储引擎。
  3. InnoDB:
  4. 提供回滚,提交,崩溃恢复的事务安全,唯一支持外键,表中的自动增长列必须是索引,如果是组合索引,必须是组合索引的第一列,并且自动增长列支持手动插入,但是如果插入值为空或者0,则实际值为增长后的值。创建外键时,要求父表必须有对应的索引,子表在创建外键的时候,也会自动创建对应的索引。如果某个表被其他表创建了外键参照,那么该表的对应索引或者主键禁止被删除。但是在创建索引时,可以指定在对父表进行删除或者更新时,子表所对应的操作,这些操作包括以下几种:
  5. RESTRICT,CASCADE,SET NULL,NO ACTION,其实RESTRICTNO ACTION作用相同,是指在子表有关联记录的时候,父表不允许更新,CASCADE是指在父表执行更新或者删除操作时,更新或者删除子表对应的记录,SET NULL是指在父表执行删除或者更新操作时,子表相应字段设置为NULL
  6. InnoDB在存储方式上,分为共享表空间和使用多表空间存储。
  7. https://blog.csdn.net/qq_34985719/article/details/78637119

select和epoll原理和区别

  1. 其实所有的I/O都是轮询的方法,只不过实现的层面不同罢了.
  2. 这个问题可能有点深入了,但相信能回答出这个问题是对I/O多路复用有很好的了解了.其中tornado使用的就是epoll的.
  3. selec,pollepoll区别总结
  4. 基本上select3个缺点:
  5. 连接数受限
  6. 查找配对速度慢
  7. 数据由内核拷贝到用户态
  8. poll改善了第一个缺点
  9. epoll改了三个缺点.
  10. 关于epoll的: http://www.cnblogs.com/my_life/articles/3968782.html

dict转列表

  1. a = {'a' : 1, 'b': 2, 'c' : 3}
  2. key_value = list(a.keys()) #字典中的key转换为列表
  3. print('字典中的key转换为列表:', key_value)
  4. value_list = list(a.values()) #字典中的value转换为列表
  5. print('字典中的value转换为列表:', value_list)

XSS攻击


  1. XSS 攻击,全称是“跨站点脚本攻击”(Cross Site Scripting),之所以缩写为 XSS,主要是为了和“层叠样式表”(Cascading StyleSheetsCSS)区别开,以免混淆。XSS 是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。这些代码包括HTML代码和客户端脚本。对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击”,而JavaScript是新型的“ShellCode”。

线程安全


  1. 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

1+2+3+...+n用python怎么用递归实现?

  1. for
  2. while
  3. https://blog.csdn.net/fang_zz/article/details/51530796

斐波那契数列不同版本

  1. while循环版
  2. a=0
  3. b=1
  4. while b < 1000:
  5. print(b)
  6. a, b = b, a+b
  7. 递归版
  8. lis = []
  9. for i in range(20):
  10. if i == 0 or i == 1: # 第1,2项 都为1
  11. lis.append(1)
  12. else:
  13. lis.append(lis[i - 2] + lis[i - 1]) # 从第3项开始每项值为前两项值之和
  14. print(lis)
  15. for循环版
  16. def fib(n):
  17. a, b = 0, 1
  18. for _ in range(n):
  19. a, b = b, a + b
  20. return b

init()和__new__()的区别

  1. __init__ 只是单纯的对实例进行某些属性的初始化,以及执行一些需要在新建对象时的必要自定义操作,无返回值。而 __new__ 返回的是用户创建的实例,这个才是真正用来创建实例的,所以 __new__ 是在 __init__ 之前执行的,先创建再初始化。

利用Python实现栈和队列

  1. # 后进先出
  2. class Stack():
  3. def __init__(self, size):
  4. self.size = size
  5. self.stack = []
  6. self.top = -1
  7. # 入栈之前检查栈是否已满
  8. def push(self, x):
  9. if self.isfull():
  10. raise exception("stack is full")
  11. else:
  12. self.stack.append(x)
  13. self.top = self.top + 1
  14. # 出栈之前检查栈是否为空
  15. def pop(self):
  16. if self.isempty():
  17. raise exception("stack is empty")
  18. else:
  19. self.top = self.top - 1
  20. self.stack.pop()
  21. def isfull(self):
  22. return self.top + 1 == self.size
  23. def isempty(self):
  24. return self.top == '-1'
  25. def showStack(self):
  26. print(self.stack)
  27. s = Stack(10)
  28. for i in range(6):
  29. s.push(i) # 入栈
  30. s.showStack() # [0, 1, 2, 3, 4, 5]
  31. for i in range(2):
  32. s.pop() # 出栈
  33. s.showStack() # [0, 1, 2, 3]
  34. -------------------
  35. # 先进先出
  36. class Queue():
  37. def __init__(self,size):
  38. self.size=size
  39. self.front=-1
  40. self.rear=-1
  41. self.queue=[]
  42. def enqueue(self,ele):  # 入队操作
  43. if self.isfull():
  44. raise exception("queue is full")
  45. else:
  46. self.queue.append(ele)
  47. self.rear=self.rear+1
  48. def dequeue(self):  # 出队操作
  49. if self.isempty():
  50. raise exception("queue is empty")
  51. else:
  52. self.queue.pop(0)
  53. self.front=self.front+1
  54. def isfull(self):
  55. return self.rear-self.front+1 == self.size
  56. def isempty(self):
  57. return self.front == self.rear
  58. def showQueue(self):
  59. print(self.queue)
  60. q=Queue(10)
  61. for i in range(6):
  62. q.enqueue(i)
  63. q.showQueue()
  64. for i in range(3):
  65. q.dequeue()
  66. q.showQueue()
  67. print(q.isempty())

Python 中的 GIL 是什么?举个例子说说其具体体现。

  1. GIL 全称 Global Interpreter Lock(全局解释器锁),任何 Python 线程执行前,必须先获得 GIL 锁,然后,每执行100条字节码,解释器就自动释放GIL锁,让别的线程有机会执行。要避免这种“现象”利用操作系统的多核优势可以有下面几种方法:
  2. 使用 C 语言编写扩展,创建原生线程,摆脱 GIL,但是即使是扩展,在 Python 代码内,任意一条Python 代码还是会有 GIL 限制
  3. 使用多进程代替多线程,使用多进程时,每个进程都有自己的 GIL。故不存在进程与进程之间的 GIL 限制。但是多进程不能共享内存。

Some Interview Questions About Python的更多相关文章

  1. python interview questions

    referce:python interview questions top 50 refercence:python interview questions top 15 summary Q: wh ...

  2. WCF学习系列二---【WCF Interview Questions – Part 2 翻译系列】

    http://www.topwcftutorials.net/2012/09/wcf-faqs-part2.html WCF Interview Questions – Part 2 This WCF ...

  3. [译]Node.js Interview Questions and Answers (2017 Edition)

    原文 Node.js Interview Questions for 2017 什么是error-first callback? 如何避免无止境的callback? 什么是Promises? 用什么工 ...

  4. WCF学习系列三--【WCF Interview Questions – Part 3 翻译系列】

    http://www.topwcftutorials.net/2012/10/wcf-faqs-part3.html WCF Interview Questions – Part 3 This WCF ...

  5. WCF学习系列四--【WCF Interview Questions – Part 4 翻译系列】

    WCF Interview Questions – Part 4   This WCF service tutorial is part-4 in series of WCF Interview Qu ...

  6. [转]Design Pattern Interview Questions - Part 4

    Bridge Pattern, Composite Pattern, Decorator Pattern, Facade Pattern, COR Pattern, Proxy Pattern, te ...

  7. [转]Design Pattern Interview Questions - Part 2

    Interpeter , Iterator , Mediator , Memento and Observer design patterns. (I) what is Interpreter pat ...

  8. [转]Design Pattern Interview Questions - Part 3

    State, Stratergy, Visitor Adapter and fly weight design pattern from interview perspective. (I) Can ...

  9. [转]Design Pattern Interview Questions - Part 1

    Factory, Abstract factory, prototype pattern (B) What are design patterns? (A) Can you explain facto ...

随机推荐

  1. disruptor 高并发编程 简介demo

    原文地址:http://www.cnblogs.com/qiaoyihang/p/6479994.html disruptor适用于大规模低延迟的并发场景.可用于读写操作分离.数据缓存,速度匹配(因为 ...

  2. HTML中的SEO和HTML语义化

    SEO 1) <title>网站SEO标题</title>, 百度搜索出来的记录, 其标题基本就提取至网站的title, 标签, 因此标题起的好, 不论对点击率还是SEO都至关 ...

  3. 初学hadoop的个人历程

       在学习hadoop之前,我就明确了要致力于大数据行业,成为优秀的大数据研发工程师的目标,有了大目标之后要分几步走,然后每一步不断细分,采用大事化小的方法去学习hadoop.下面开始叙述我是如何初 ...

  4. gif 命令大全

    git init # 初始化本地git仓库(创建新仓库) git config --global user.name "xxx" # 配置用户名 git config --glob ...

  5. Ubuntu启动文件破坏启动恢复方法

    reboot后主机登录显示如下图: 解决步骤: 1.fs0:(回车) 2.edit startup.nsh 3.添加下面字段: fs0: cd EFI/ubuntu grubx64.efi 4.重启即 ...

  6. DNS域名解析的配置

    /etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序.该文件是由域名解析 器(resolver,一个根据主机名解析IP地址的 ...

  7. 【Flask】Flask-Migrate基本使用

    # flask_migrate笔记:在实际的开发环境中,经常会发生数据库修改的行为.一般我们修改数据库不会直接手动的去修改,而是去修改ORM对应的模型,然后再把模型映射到数据库中.这时候如果有一个工具 ...

  8. Python3.x:PDFMiner3k在线、本地解析pdf

    Python3.x:PDFMiner3k在线.本地解析pdf 安装 pip install pdfminer3k 示例一:在线解析pdf ''' Demo:pdf2htmlex解析pdf Dateti ...

  9. QMap的使用

    1.定义 mapQMap<QString,QColor> map; 2.插入数据 map.insert("AA",RGB(255,0,0)); map.insert(& ...

  10. Android 6.0中在/dev下添加新设备驱动下Selinux相关设置【转】

    本文转载自:https://blog.csdn.net/fantasy_wxe/article/details/52013922 错误1: 07-23 13:06:57.617   117   117 ...