科学上网

随便记录一下搭建自己的vpn服务器的过程 在搬瓦工购买国外服务器 安装shadowsocks,并且需要python2.7环境,用到了python2.7的类库 写配置文件 { "server":"65.49.204.163", "local_address":"127.0.0.1", "local_port":1080, "port_password":{ "8989":"123456",

Read More...


将当前分支与远程分支关联,关联后直接使用git push命令推送至远程 git push --set-upstream origin darwin_admin

Read More...


打个比方: 小饭店原来只有一个厨师,切菜洗菜备料炒菜全干。后来客人多了,厨房一个厨师忙不过来,又请了个厨师,两个厨师都能炒一样的菜,这两个厨师的关系是集群。为了让厨师专心炒菜,把菜做到极致,又请了个配菜师负责切菜,备菜,备料,厨师和配菜师的关系是分布式,一个配菜师也忙不过来了,又请了个配菜师,两个配菜师关系是集群 总结: 分布式:一个业务分拆多个子业务,部署在不同的服务器上集群:同一个业务,部署在多个服务器上

Read More...


在模糊查询的时候,从前端传到后端的字符串,会经过转义,像>这些符号都会被转义掉,一开始用StringEscapeUtil来处理,后来用Spring的HtmlUtil处理,甚至自己写代码来转义,但是始终得不到正确的结果。先看看错误的代码: if (condition.contains("& gt;")) { condition = condition.replace("& gt

Read More...


MySQL Illegal mix of collations for operation ‘like’ 在 MySQL 5.5 以上, 若字段类型 Type 是 time,date,datetime,在 select时如果使用 like ‘%中文%’ 会出现 Illegal mix of collations for operation ‘like’ 在编程时要对每个字段进行查找,在执行时可能就会出现时间字段 like ‘%中文%’

Read More...


使用distinct 在使用distinct去重的时候,单列是挺好用的,但是多列的时候,就会有一点问题。 首先我想要做的效果是简单的数据去重,但是想要针对一个列来去重,其他列不需要去重,一开始是这样写的: select distinct sample_id,id,name from mutation_information; 可以查,但是他是针对多列来去重的,意思就是说,并不只针对sample_id来去重,而是针对sample_id,i

Read More...


hadoop学习分享

hadoop作为大数据的底层存储解决方案,是目前的首选。 hadoop主要由hdfs和mapReduce两大组件组成,一个是分布式文件系统,一个是分布式并行计算框架。可以说这两个组件解决了大数据最基本的数据存储和离线大数据处理的问题,当然这里说是离线数据处理,因为实时处理有别的组件支持。而hdfs,我更认同分布式块文件系统的叫法。 hadoop2.x之后,由hdfs,MapReduce和Yarn三大组件构成 hdfs,分布式块文件

Read More...


java的自定义对象,一般是不可比较的,但是我们很多时候需要对自定义的对象进行排序,去重等操作,这就需要我们自己去写comparable接口了。 comparable接口简介 最重要是实现int compareTo(T o)这个方法,形参是待比较对象T,i是判断对象是否相等的。 i=0,x和y相等 i>0,x>y(y是待比较对象) i<0,x<y 实际取决与compareTo方法体中,this和object

Read More...


python异常处理

python异常处理: #!/usr/bin/python#-*- coding:utf-8 -*-import sysreload(sys)sys.setdefaultencoding('utf8')def test1(): try: print('In try.') raise GeneratorExit raise FloatingPointError except Gener

Read More...


python模块

python的模块也是python对象,具有随机的名字属性,用以绑定或引用。 模块名通常就是文件名。例如aname模块,一般会有aname.py文件。 dir()函数,类似与浏览器实现的js,console.dir()方法,可以列出模块对象的所有属性及方法。 python的全局变量与局部变量具有和php类似的使用方法。在函数内,若是想使用函数外的全局变量,需要使用global关键字来申明该变量是引用全局变量的。 #coding=u

Read More...


在进行内联子视图查询的时候,报Every derived table must have its own alias错误。 其中查询语句是SELECT count(*) FROM ( SELECT DISTINCT library FROM mutation_information WHERE chr='chr13' AND pos='32906729' AND ref='A' AND

Read More...


为什么hdfs不支持随机写 随机写的话,分布式数据一致性会受到挑战。而如果一定要保证实时的数据一致性,那么性能上的牺牲就会太大了。所以说,随机写不属于HDFS的适用场景。 绝大部分文件的修改是采用在文件尾部追加数据,而不是覆盖原有数据的方式。对文件的随机写入操作在实际中几乎不存在。一旦写完之后,对文 件的操作就只有读,而且通常是按顺序读。大量的数据符合这些特性,比如:数据分析程序扫描的超大的数据集;正在运行的应用程序生成的连续的数据流

Read More...


数据库:传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。 数据仓库:数据仓库系统的主要应用主要是OLAP(On-Line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 我尝试着再补充些具体的事例来说明,这样更可以帮助大家更好理解一些。举个最常见的例子,拿电商行业来说好了。基本每家电商公司都会经历,从只需要业务数据库到要数据仓库的阶段。电商早期启动非

Read More...


关于python的字典数据类型,其实就是JAVA中的map类型,但是有个特点: 键必须不可变,除了可以用数,字符串或元祖充当外,还可以用不可变集合frozenset()生成的来充当。

Read More...


python循环语句

python中的循环,支持while和for,但是有一点需要注意的是,python中的for循环,只支持for…in…格式的。

Read More...


在python中,有个pass语句,该语句是个空语句,只是为了保持程序结构的完整性。我们可以在条件判断或者循环中使用pass来进行空操作。

Read More...


python的六种数据类型 在python3中,支持以下六种数据类型 Numbers String List Tuple Set Dict 可以直接使用type()或isinstance()函数判断类型,区别和java的typeof ,instanceof关键字一样。 注意:创建空的Set的时候,使用方法,set(),而非使用{}。Tuple和String都是不可变的。可以通过id()函数返回对象的内存地址或者关键字is来

Read More...


主要记一下python中,个人觉得和java差异较大,对从java转学python的人来说需要记忆的地方。 python中的缩进 python和其他语言最大的区别,就是使用缩进来写模块。而不是使用{}来区分类,函数或者其他逻辑判断等。这是严格的语法格式。 if中的逻辑判断 在python的逻辑判断中,if代码块中,通常不像java使用&&,||,!来进行逻辑运算,而是直接使用关键字and,or,not来书写。 多行代

Read More...


Python用下划线作为变量前缀和后缀指定特殊变量。 _xxx 不能用`from module import *`导入__xxx 类私有成员__xxx__ 系统定义的名字 核心风格,避免使用下划线作为变量名的开始。 "单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量; "双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问

Read More...


删除不必要上传的文件 在使用git同步仓库的时候,往往会有很多不需要上传到远程的文件。这个时候我们需要把他们加到.gitignore文件中来,以此忽略这些文件。 <!--示例文件,/代表的是根目录。-->/.setting/*/.idea/*/logs/* 需要注意的地方 有的时候,我们已经把不需要的文件上传到了远程服务器中,这个时候我们又想要删除掉不需要上传的文件。那么我们可以这样来: 在远程服务器中,删除不要的文件 g

Read More...


这篇博文主要是想记录一下,今天在实现需求,修改bug的时候,遇到的几个关键的问题。 ajax请求自动刷新页面,重新刷新了js,js内保存的服务器返回的变量丢失。 SpringMVC的response对象返回要下载的文件流,浏览器不会弹出窗口自动下载(下载机制未被激活)。 ajax自动刷新页面前端关键代码: <form> <input type="submit" name="report_view" id="r

Read More...


传统的表单上传,我觉得有两个典型的特点,一个就是在<form>标签中,通过像下面这样指定属性实现文件上传: <form id= "uploadForm" action= "http://localhost:8080/cfJAX_RS/rest/file/upload" method= "post" enctype ="multipart/form-data"> 另一个就是<input>标签的type属

Read More...


使用update-alternatives命令在ubuntu或者现在的很多linux系统中,很多时候都是python2和python3的环境都同时安装的,这个时候,就会在程序使用的时候会有点麻烦。最典型的就是在安装pip的时候,会出现一些版本的问题。 这个时候我们需要使用update-alternatives命令来指定python的运行环境,其实这个命令只是创建软连接,通过改变软连接的指向,来实现python的环境指向。 具体的使用方法

Read More...


首先是一条命令nohup /usr/local/node/bin/node /www/im/chat.js >> /usr/local/node/output.log 2>&1 & 这是一条很简单的命令,但这条命令下有三个地方需要理解记忆的: nohup命令,不挂断地运行命令,nohup --help可以查看怎么使用。 最末的&符号,代表该命令是后台进程,在后台运行,不占用shell。 2&g

Read More...


ubuntu上搭建mysql服务器,远程访问。1 设置配置文件,把bind-address的那行注释了。 2 mysql中执行grant all PRIVILEGES on db_name.* to ‘username’@’xxx.xxx.xx.x’ identified by ‘password’ WITH GRANT OPTION;

Read More...


通知在AOP术语体系中,切面真正要做的工作称之为通知(advice)。通知负责定义切面的what和when——即这个切面负责什么工作,以及何时执行这个工作。(其实就是切面类中的方法,方法上使用注解,定义通知的when。) 织入点织入点类似一个插槽,通过织入点可以将切面织入到应用的执行流中。织入点可能是正在调用的方法、正在抛出的异常或者是正在被修改的属性。 切点如果说通知是定义了切面的what和when这两个方面,那么切点就定义了wher

Read More...


安装ubuntu-16.04安装ubuntu系统,主要就是把ubuntu的iso文件刻录进去U盘,然后电脑开机通过usb启动就行。主要是一下几个步骤: 准备个u盘,在win下使用ultra-iso软件进行刻录。 插入U盘。 关闭笔记本的快速启动。 进入BIOS设置从usb启动。 开机装系统。 这个最简单的单系统安装,会覆盖了之前的系统;双系统的话,在安装之前,要进行分区,以及格式化磁盘的准备工作,双系统安装已经简化了很多,在系统安装

Read More...


利用alternatives机制更改python3为默认 shell中执行 sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150 安装python3的包 Numpy sudo

Read More...


在linux上搭建一个php环境 常用的php环境就是linux+apache+mysql+php,那么我们就应该从安装软件开始,一般是先装apache,再装mysql,最后是php,因为最后安装PHP会省去很多麻烦,直接就跑起来了。 1 安装apache sudo apt-get install apache2 2 安装mysql sudo apt-get install mysql-server apt-get isntall my

Read More...


Apache,指的应该是Apache软件基金会下的一个项目——Apache HTTP Server Project;Nginx同样也是一款开源的HTTP服务器软件(当然它也可以作为邮件代理服务器、通用的TCP代理服务器)。HTTP服务器本质上也是一种应用程序——它通常运行在服务器之上,绑定服务器的IP地址并监听某一个tcp端口来接收并处理HTTP请求,这样客户端(一般来说是IE, Firefox,Chrome这样的浏览器)就能够通过HT

Read More...


高级语言中的变量 在c语言中,是有指针这个名词的,指针就是地址,而且与之对应的,是指针变量,是专门存放指针的变量(也就是存放地址的变量) 在高级语言中,并没有指针变量这些说法,这是因为高级语言中的各种变量,都是指针变量,都是存放地址的变量。 int a = '10';//在内存中创建了'10'这个值,同时也创建了a这个指针变量,存放的是指向‘10’的指针。int b = a;a = '20';print(b);//会输出10

Read More...


python开始学习

开始python的学习 写这篇文章,以此开始记录一下自己关于python的一些学习。

Read More...


常用的vi指令

vi的常用指令 a 从命令模式转为插入模式,从光标下一个空格开始编辑 o 从命令模式转为插入模式,换行 i 直接当前位置插入 G定位到末行 $定位到行末 x删除字符 dd删除行 yw复制单词 yy复制行 p粘贴 w向前移动一个单词 b向后移动一个单词 ?搜索字符

Read More...


git命令记录 git init 初始化一个仓库 git add [file] 提交至暂存区 git commit -m "说明" 提交至本地git仓库 git status 查看仓库状态 git diff 查看文件差别 比较远程仓库和本地仓库的文件差异 git fetch origin git diff master origin/master git log 查看详细日志 git log

Read More...


简单记录debug快捷键 F5 跳进当前断点的方法内F6 单步调试,逐行运行F7 从方法体内跳出F8 执行完当前断点,调试进行到下一个断点

Read More...


项目中使用到了bootstrap table框架,在此记录 在项目中使用到了bootstrap框架,使用的时候只要把后台返回的数据设置成json格式,在table初始化的column中的field中填写json对象的属性名,就能正确赋值。如果使用springMVC框架,直接声明@responseBody注解,框架会自动将信息封装为json格式。要深入学的话,还是要看文档再研究源码。

Read More...


java注解 在定义java注解的时候,很多时候,一般会把注解的识别定义为@Retention(RetentionPolicy.RUNTIME),这是表示注解会在程序运行时也保留。这样做的主要好处就是可以通过反射的方式,读取到该注解,然后完成相应操作。

Read More...


三者区别作用 监听器:主要是在启动的时候做一些初始化工作。 过滤器:取你所想。主要是对请求中的数据进行处理,例如编码处理。 拦截器:拒你想拒。面向切面编程,主要是通过动态代理为拦截到的方法字段调用别的切面方法,主要用在插件上。

Read More...


一些类或者文件加载not found的错误 1 首先是考虑缺少依赖jar包 2 考虑jar包冲突 3 考虑代码书写 4 一定要在web项目的properties里,把依赖库都在Deployment Assemby里配置进来。因为手动加的很多依赖库,只是在build path里加了,但是在项目发布的依赖里是没有的。

Read More...


CSS浮动

css浮动 刚好需要用到前端知识,又复习了一些css的浮动。简单记录下来吧。 首先认识标准流,在标准流里,块级元素占据一行,内联元素不换行的文档规则。 然后要讲浮动,一定要和绝对定位一起对比着讲。 绝对定位 直接从标准流中删除定位的元素,可以在视图窗口的任意位置覆盖显示该元素。 浮动 浮动解决的问题是专门针对文字的。如果是绝对定位的话,会直接将定位到的位置的元素覆盖住,文字也直接覆盖。而css浮动,就是为了解决这个问题,文字不会被遮

Read More...


JMS初认识

没学过JMS,怎么理解JMS? 比如:你要和某个服务器通信,你得写套接字,连接后双方各send和recv消息。 而你用JMS,就是向消息服务器(暂且称为服务器)发送一个消息,而接收方,只要从这个服务器取下消息即可,不用去写套接字啦。 JMS是一套规范,各个厂商有不同的实现。 比如ActiveMQ,WebsphereMQ等。这里称之为消息中间件。 用了消息中间件,通信的双方都是通过这个中间件来收取消息。(这样中间件就通用了,不用再去为某两

Read More...


利用maven关联源代码 发现使用maven的一个好处就是不用再手动绑定源码了。首先就是下载一个合适的Eclipse版本,带maven插件的最好,就不用再在线安装了,然后就是为你的依赖包关联源码了。只需要在eclipse中,window->preference->maven->勾选download artifact sources,以及Java doc。

Read More...


配置中心仓库的镜像地址,提高访问速度 通过修改用户目录下的.m2目录,把maven中的conf/setting.xml文件拷贝至.m2,repository作为本地仓库,setting.xml作为仓库配置文件,修改里面的镜像地址提高访问速度。 <mirrors> <mirror> <id>alimaven</id> <mirrorOf>central

Read More...


springMVC简单工作流程 这图我觉得讲得比较好懂,之前唯一有理解障碍的就是HandlerMapping返回执行链。想明白了就好,就是一个执行链包含了控制器和拦截器,两者共同定义了执行这个Handler的流程,所以把它们封装在一个执行链返回给核心控制器就行了,接下来调用工作由核心控制器分派给其他人就行了。

Read More...


1、@Autowired与@Resource都可以用来装配bean. 都可以写在字段上,或写在setter方法上。 2、@Autowired默认按类型装配(这个注解是属业spring的),默认情况下必须要求依赖对象必须存在,如果要允许null 值,可以设置它的required属性为false,如:@Autowired(required=false) ,如果我们想使用名称装配可以结合@Qualifier注解进行使用,如下: @Autow

Read More...


关于Spring中的<context:annotation-config/>配置 当我们需要使用BeanPostProcessor时,直接在Spring配置文件中定义这些Bean显得比较笨拙,例如:使用@Autowired注解,必须事先在Spring容器中声明AutowiredAnnotationBeanPostProcessor的Bean:使用 @Required注解,就必须声明RequiredAnnotationBean

Read More...


@param注解 @Update({“update book set mainPic=#{param2} where isbn=#{param1}”}) int updatePic(String isbn, Integer pictureId); 按照传入参数的顺序,mybatis框架会有为参数生成隐藏的可用参数,如param1就对应第一个接收形参isbn。也可以指定参数名,如下: @Update({“update book se

Read More...


代码中的路径问题

Read More...


外键约束的引用带来的问题 在外键问题中,很多时候会遇到`a表`引用`b表`的主键,删除a表的时候,会有外键约束,这个时候可以在数据库软件中(如navicat),右键出设计表,将约束的外键的`on delete`和`on update`进行设计,一般有`set null`和`cascade`等。

Read More...


ajax的回调函数再发送ajax请求 //发送ajax多个请求给服务器,利用闭包原理实现联合查询function getListOfOrderAndDelivery(){ $.ajax({ type:'get', url:'http://localhost:8080/ordermgr/list', contentType:'text/html;charset=utf-8', success:function(

Read More...


几个小问题

‘前端的几个小问题’ <button onclick=\"deteleOne('"+json[i].parent+"')\">删除</button> 再方法体里面穿变量的时候,如果是字符应该要用引号包裹。 <script>function jump(){location.href("http://localhost/index.html");}</script><

Read More...


还未深学,单纯感觉 public interface CateHasBookMapper { @Insert({"insert into cate_has_book values(#{cate}, #{isbn})"}) int insert(@Param("isbn")String isbn, @Param("cate")String cateNa

Read More...


语言中的单引号和双引号 javascript 双引号比单引号稍稍耗费点系统资源,因为双引号还需要负责某些特殊代码的转换工作,如 \n 及 \r 等。其它时候,都是一样的。所以,一般建议不包含转义字符的字符串,就用单引号来处理。 php 单引号内部的变量不会执行双引号会执行 $name = 'hello';echo "the $name";//会输出 the hello//而如果是单引号$name = 'hello';echo 'the

Read More...


springMVC和struts学习后 springMVC参数绑定是对方法中的`形参`进行自动绑定,struts2是对action中的`属性参数`进行绑定。 struts2是对`类`来映射,springMVC是对`方法`来映射 `最重要的一点:`struts2通过值栈的方式,共享变量,前台OGNL语言访问值栈取值;springMVC是通过每个方法独立一个modelMap来共享变量,框架前台也直接EL表达式访问modelMap取值。

Read More...


关于反射 比如有很多个汽车的实例:宝马、大众、丰田等,现在需要有一个方法根据一个参数获得其中一种车不使用反射的写法: public Car getCar(String name) { if(name.equals("宝马") { return new 宝马(); } if(name.equals("大众") { return new 大众(); }} 如果汽车的实例非常多

Read More...


struts碎片

struts碎片 在struts2中,一个http请求对应一个线程,一个线程对应一个actionContext,每个action类对应一个valueStack。

Read More...


关联源代码和帮助文档 源码文件和帮助文档在哪里 一般而言,正式发布的公用API都含有齐备的文档说明,开源项目还附上了源代码。这里我们以STRUTS2项目为例来说明:从Struts2官网上下载下来的All包,包含了源代码、文档、JAR包等所有的内容:http://apache.fayea.com/struts/2.5/struts-2.5-all.zip,我们将压缩包解压之后,可以看到里面包含的内容: 其中apps文件夹包含了所有的str

Read More...


JS的预解析

JS是解释型的语言没错,但是JS是不是一句一句解释执行的呢?在JS中有“预解析” JavaScript“预解析”是把变量或函数预解析到它们能调用的环境(变量运行时环境)中。在预编译的过程中,会把定义式的函数优先执行,也会把所有var变量创建,默认值为undefined,以提高程序的执行效率。 /*它与var msg; alert(msg);是一样的。如果你把下面第二句注释掉,则会报“msg未定义”错误。这亦表明JavaScript是“预

Read More...


JS创建对象

JS创建对象,首先要明白JS和JAVA不一样,没有类的概念,所有对象都是实例。 只要把对象的__proto__属性,指向一个对象,就继承了该对象。 var Student = { name: 'Robot', height: 1.2, run: function () { console.log(this.name + ' is running...&ap

Read More...


JS的闭包

JS闭包,闭包可以看做是父函数对象的公用方法,内部变量可以看做是父函数对象的私有属性。 function autoInc(init){ let x=init||0; return{ inc:function(){ x+=1; return x; } }} JavaScript作用域 是”链式作用

Read More...


添加国内镜像maven中央仓库 首先在安装目录找到conf文件夹,进入找到settings.xml配置文件,在文件中有标签,添加如下代码: <mirror> <id>alimaven</id> <mirrorOf>central</mirrorOf> <name>ali yun</name> <url>

Read More...


mysql模糊查询

简化查询,提高效率 经常会需要使用模糊查询,用来匹配需要的元组输出。如果对每个列都使用where 列名 like “%关键字%” or 列名 like “%关键字%”来进行拼接的话,不仅效率低,而且书写还困难。 推荐:select * from Table where concat('name','info') like '%xxx%';

Read More...


mysql多表查询 在用mysql去用多表查询的时候,经常会报一个错 every derived table must have its own alias 这个告诉我们就是在用多表查询的时候要给每个取到的表给个自己的别名。 //这段sql代码在mysql会报错select max(enrollment),min(enrollment)from(select sec_id,semester,year,count(distinct id)

Read More...


sql模拟超集 not exists …except…可以实现模拟超级的效果,比如判断A包含B,那么可以用sql语句not exists B except A; 但是遗憾的是,mysql没有实现except关键字,不过可以用in,not in或别的语句实现相同效果。

Read More...


闭包 在数据库理论中,闭包指的是一个集合。 闭包分为很多,在数据库中学了函数依赖的闭包,属性的闭包,自己学javascript的时候看了js的闭包,总的来说,闭包就是个集合。集合元素以及集合的函数依赖构成一个闭包。 JS中的闭包,来自知乎网友解释 1、闭包本质还是函数,只不过这个函数绑定了上下文环境(函数内部引用的所有变量)。 2、在函数式编程中,闭包的逻辑就是:『让程序运行环境来管理状态』。命令式语言围绕状态来建模,每次指令操作都在控

Read More...


ER模型设计

ER模型设计 在二元联系集中,实体集AB间映射基数有: 一对一 一对多 多对一 多对多 映射基数是指一个实体通过联系集能关联的实体的个数。 ER模型到关系模式的转换 对于多对多的二元联系,参与实体集的主码属性的并集成为主码。 对于一对一的二元联系集,任何一个实体集的主码都可以选做主码。 对于多对一或者一对多的二元联系集,联系集中“多”的那一方的实体集的主码构成主码。 对于边上没有箭头的n元联系集,所有参与实体集的主码属性的

Read More...


各种连接表达式 在sql语法中,支持各种连接运算,这些连接运算其实也是通过对笛卡尔积结果集进行特定条件筛选后得到想要的结果集这么一个过程。 既然他们和普通select from where一样,那么为什么要使用连接运算,因为sql引擎执行连接运算时效率高。 sql支持的连接 笛卡尔积 FROM子句后面跟的表直接进行连接 内连接(分为三种) 1.1.等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中

Read More...


sql的基本结构 sql主要是由select from where三个关键字组成,由这三个关键字可以写成大部分的sql查询语句,我根据笛卡尔积是所有组合元组的集合,是个有所有组合的结果集得出这个结论。也就是说只要在from后面接的表,没有用连接运算的话,都是直接产生一个笛卡尔积结果集,包含了所有组合结果,然后再用where子句的条件去进一步筛选,最后用select字句进行投影想要的字段,最终形成一个符合条件的结果集。 sql语句得执行效

Read More...


Servlet与JSP的关系理解 之前说过一些,JSP是以Servlet为基础的,所以很多地方JSP与Servlet都一样。 每一个JSP页面都会被Web容器编译成一个Java类(即Servlet),供web容器调用,并且生成HTML页面(Servlet直接利用response对象的输出流输出)回馈给用户。所以归根结底,JSP还是利用Servlet输出html页面,只是用JSP语言,省略了servlet繁琐的逐条输出,同时还把整个软件架

Read More...


Servlet的理解 Servlet是服务器端用来处理浏览器请求的处理类,tomcat有专门的servlet容器负责管理servlet类。从java的面向对象的角度理解是最容易的,servlet是一个个类,当web服务器启动的时候,这些类会被实例化到服务器内存中,(这个过程和用new操作符一样,只是这里是用在web.xml配置文件中去注册的方式,通过Servlet容器获取web.xml内注册类路径反射实例化类),这一个个servlet对

Read More...


JSP总结

JSP学习 JSP是一门和PHP类似的语言,只要是与后台服务器进行数据交互的,实现的功能类似,语法也有很多地方相通。然后因为JSP直接用JAVA来实现,所以学起来也觉得挺快的。 一般一个JSP页面会对应一个Servlet类(一个servlet类,就是一个java类的意思),JSP就是Servlet的简单的另一种语言描述。JSP页面也有生命周期,与servlet差不多,但比servlet多了一个编译的过程(jsp翻译为servlet,se

Read More...


今天写js的动画效果,结果div一直不会动,语法什么的都检查了很多遍,发现并没错。后来发现我在js操作div中未定义的属性。就是div的style css样式文件中,没有left这个属性,然而我在js中却在操作这个属性,难怪一直不会跑。

Read More...


js立即执行函数 在js中,我们经常回看到一些立即执行的函数,而要想理解立即执行函数,那么要先明白几个概念: 函数声明:function fnName () {…};使用function关键字声明一个函数,再指定一个函数名,叫函数声明。 函数表达式:var fnName = function () {…};使用function关键字声明一个函数,但未给函数命名,最后将匿名函数赋予一个变量,叫函数表达式。 匿名函数:function (

Read More...


HTML DOM的理解

今天关于HTML DOM有了准确的认识 之前一直记住HTML DOM,HTML的文档对象模型,是一个API。使用他的时候就按照API说的用法去用就对了。今天兴起学了一下mooc网上js的动画制作的知识,感觉到自己对offsetLeft属性不是很了解,但是又是那种见过的,却分不清是属于哪里的属性。带着疑惑,找了一下答案,写下自己的新的认识。 应用程序编程接口,很抽象的描述。HTML DOM,就是一个编程接口,程序员们不管用什么语言,想要用

Read More...


首先记住,所有插件都可以在package Control官网下载,这是我写完这篇文章后明白的。 package Control官网 sublime Text3安装Emmet插件 首先装插件的时候因为报了网络的错误,导致不能联网自动下载插件,所以必须手动下载。 首先插件是放在Preferences->Browser packages下的 然后就是需要下载对应的电脑版本的Emmet和一个PyV8引擎。 window64位为例

Read More...


什么是servlet 所谓servlet,就是一个java编写的类,这个类主要作用是用来处理浏览器发送过来的请求,然后返回结果给浏览器。简单来说,它就是一个java工具类,需要的时候实例化一个对象来处理请求,然后返回结果给请求者。 什么是tomcat 我们经常听到容器的概念,tomcat就是一个容器。其实容器就是一个用来装东西的器具,我们程序员说的容器,就是一个用来组织存放各种其他类的一个应用程序吧,这个应用程序负责管理所有存放在它里面

Read More...


关于如何写出正确的循环体 今天实现二叉树的时候,虽然是可以写出来,但是明显感到自己的循环体的设计并不熟练。马克思主义中说做事情都有方法论,虽然具体的事要具体分析,我觉得自己从二叉树的中序遍历的非递归算法设计的过程中,有了点关于循环体确定的方法。 首先是一定要很清楚你要完成这件事,每一步是怎么走的。我们的逻辑的正确性,保持正确和清晰是重要条件。 从我们的逻辑中提取有重复相同步骤的部分,可以考虑设计成一个循环结构,提取判断重复判断部分,

Read More...


递归树法以及主定理 主定理可以快速得到,由分治法得到的递推关系式的算法时间复杂度的渐进符号表示。 主定理的证明可以使用递归树结合数学归纳法进行证明。递归树法可以用来计算算法时间复杂度,而且效果往往很好。

Read More...


学习递归

关于递归 说到递归,其实已经接触了很久了。但是却一直没有真正地学会用他。今天想在学二叉树之前好好整理一下自己关于递归的认识。 Eric Lippert在stackoverflow上 Svick’s solution is fine, but I thought I’d add a bit more general advice. It seems like you are new to writing recursive methods

Read More...


栈和队列的简单链式实现 简单实现了一下堆栈和队列的链表表示,并不难,然后需要自己注意的地方就是需要注意赋值的顺序千万不要搞反了,如果搞反了很容易就出现nullPointerException。以后排错的时候可以朝这方向检查一下。 /** * 循环链表结点,和普通链表没什么区别 * @author john */class ListNode{ private int data; private ListNode next; pu

Read More...


简单十字链表java实现 首先说一下关于十字链表的认识,其实简单来说,就是一个改进版本的二维数组,同时,他可以在实现图之类的数据结构上大有用处。今天按照自己对十字链表的理解,简单实现了一下。之所以说简单,主要是输入的时候要按照二维数组的存放顺序去输入;当然,还有一点是因为我没完整实现十字链表抽象数据结构的所有操作集。 import java.util.Scanner;/** * 十字链表结点类 * @author john * */cl

Read More...


线性表的思考 之前在学习C的时候,曾经用C实现过基本的数据结构。现在对计算机体系有了较全面,较深入的认识后,想对之前的数据结构重新梳理,构建自己的知识体系。 以前学C的时候一直都不在状态,虽然课程设计什么的都能够独立完成,但是历程很心酸,现在回想一下,主要是自己在用代码实现逻辑的时候,太混乱,加上对C中的指针并未真正的理解,毕竟大一才真正接触计算机,我经常这样安慰自己。 那么现在先简单记录一下对以前不懂的地方的重新理解。 首先是指针,

Read More...


关于逻辑 首先是要有自己的逻辑,就是你想怎么去完成这个功能。 比如这里: 然后我就会想着服务器管理者应该是只有一个的,那么应该用个单例模式写。不过首先是要先写底下的被别人引用的类。 然后再考虑在别的类中怎么引用,然后通过按照你的逻辑去通过代码实现。 举例子,比如服务器管理者这里,需要管理一个生产者和消费者的连接,然后首先考虑用什么数据结构存储起这些连接。当消费者通过一个socket连接到服务器,那么服务器这边可以通过一个List来存储

Read More...


操作系统简单总结——文件管理 文件管理不是很想总结,那就这样吧。遇到就翻翻书吧。

Read More...


操作系统简单总结——I/O管理和磁盘调度 I/O管理 I/O设备(外部设备)主要是与外部进行数据交流的设备。每个设备都有通过连接总线的设备管理器与CPU和内存相连。 I/O功能组织的四种技术: 程序控制I/O 中断驱动I/O 直接存储器访问DMA 通道 I/O缓冲: 内存公用缓冲池(磁盘的部分扇区副本和其他I/O数据) 设备专用缓冲 缓冲主要解决速度不匹配的问题 磁盘请求调度 先进先出 最短服务时间优先算法 SCAN扫描

Read More...


操作系统简单总结——进程管理 单处理器进程调度 长程调度:新作业提交时,决定是否将其送入内存,成为一个进程。也称作业调度。 中程调度:决定把哪些进程在内存与磁盘间交换 短程调度:决定将CPU分配给哪个就绪进程 长程调度和短程调度主要是进程换入换出。短程调度主要是时间片用完之类的。 关于进程调度这块主要是选择调度算法的学习。 先来先服务 轮转 最短进程优先 最短剩余时间优先 最高响应比优先 多级反馈 多处理器进程调度 进程调度

Read More...


操作系统简单总结——内存管理及虚拟内存 内存管理的需求 内存分区 内存分段 内存分页 内存管理基本概念 页框:内存中的固定长度块,装载页。 页:磁盘中固定长度存储块 段:磁盘中变长数据块,段可分成多个页。 重定位所谓重定位就是要把代码里出现的地址转换为实际的物理内存地址。 保护进程之间都有自己的代码段数据段之类的,进程需要对各自的代码数据进行保护,举个例子,用户进程就不能访问OS操作系统的相关代码数据。 实现保护机制由CPU

Read More...


操作系统简单总结——线程简介 进程和线程 线程分类 进程和线程 进程和线程对比 进程是资源分配的单位,不频繁切换(OS控制)。 线程是被调度运行的单位。不拥有资源,可频繁调度切换(由进程本身控制)。 我觉得首先要明白线程是进程所拥有的,受进程管理。然后进程是OS管理的,是分配资源,被调度的对象。正如OS通过PCB管理进程,进程通过TCB管理线程。 我觉得很重要的是因为线程是最小被调度运行单元,然后每一个线程都会有自己的工作

Read More...


操作系统简单总结——进程简介 什么是进程 进程状态 进程描述 进程控制 什么是进程 进程:程序在一个数据集上的一次执行过程。 进程和程序的区别: 程序是静态的,进程是动态的。进程可以创建其他进程。 程序可对应一个进程,也可对应多个进程(只要进程使用的数据集不同) 举个例子,在你电脑里是可以运行两个QQ的,装在电脑里的QQ程序可以被多次执行,每次打开一个新的QQ,会根据不同的用户使用不同的用户的数据。 进程组成: 程序代码 数

Read More...


一个解决了我很多疑问的关键 原来操作系统里面说的PSW(程序状态字)是一个寄存器,而这个寄存器,既没有说是在奔腾CPU专门实现那种,而是X86架构也一直都有的,他就是我之前学汇编一直忽略的状态寄存器(也称程序状态字,标志寄存器)。flag register,记录了CPU的很多东西,以前觉得最不重要的东西,原来是最重要的。 FR包括状态位、控制位和系统标志位,用于指示微处理器的状态并控制微处理器的操作。 关于汇编可以看看这里,汇编概述

Read More...


操作系统简单总结——操作系统简介 操作系统主要是帮助管理计算机的程序,内存,设备以及文件的一个程序。用户的程序的执行时机、能在CPU上运行多长时间、分配多大内存、何时使用I/O设备、对文件的访问等等都是由操作系统决定。因为操作系统是直接与硬件打交道的软件层,所以操作系统里会实现了很多与硬件相关的东西。具体细节可以不用太深入。可以翻看操作系统控制硬件。 现代操作系统的特征主要是: 微内核。内核是OS的核心,执行进程,内存,设备,文件管

Read More...


操作系统简单总结——计算机简介 基本构成 微处理器发展演化 指令执行 中断 存储器的层次结构 高速缓存 直接内存存取 计算机的基本构成主要是分四块。 其中在每个I/O模块的控制器中都会有专门的寄存器组用来与CPU实现数据交流和被CPU控制。 微处理器的发展史 微处理器发展主要是单核到多核的转变。 在一些CPU里,会有遇到双核4线程之类的,其实他不是真正的4核。只是在每个CPU内部,都会多出一个寄存器组,能够执行两个独立的线程代

Read More...


虚拟机是怎么实现的? 假设这里的虚拟化是指在一个OS下虚拟化另外一个OS(ESX那种hypervisor直接跑在硬件上的做法,其实大同小异),另外假设这里的虚拟化是指full virtualization而不是Xen那种para-virtualization。最后假设虚拟化的是一个早期的x86机子(没有hardware supported virtualization的存在)。 首先看为什么一个OS无法直接与另外的OS共存。OS作为硬件

Read More...


堆栈理解

程序内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分,java底层好像就是用C/c++写的 栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 全局区(静态区)(static)—,全局变量和静态变量的存储是放

Read More...


汇编语言概述

汇编语言简介 汇编语言是一门直接与硬件相关的编程语言,它是一台机器的机器语言的符号语言。每一台计算机都有自己的指令系统,不一样的机器由于硬件的差异,采用的指令系统不一样,而汇编,也是每台机器都不太一样的,因为汇编就是用符合去代替指令中的操作码以及操作数。可以这样说,理解计算机CPU在某一架构(物理实现)下的工作原理,是学好汇编很重要的一点。 汇编语言的出现大大提高了编程效率,但是有一个问题就是不同CPU的指令集可能不同,这样就需要为不同

Read More...


什么是数据结构 数据结构是计算机存储、组织数据的方式。数据结构是存在联系的数据元素具有某种组织方式的集合。(至今无标准的定义) 数据结构分为逻辑结构(就是我们脑里面组织存放数据的方式,比如链状存数据,像树一样存等)和物理存储结构(连续一块空间去存(数组),分散地去存数据(指针串联起来))。 抽象数据结构是由数据结构以及该数据集合的操作集构成。 什么是算法 简单理解,算法就是告诉你怎么样去完成一件事(或者告诉你完成一件事的步骤是什么)。

Read More...


浏览器开发者: <img src="path-to-default-image.jpg" alt="响应式图片的3种解决方案" alt=""srcset="path-to-default-image.jpg 600w 200h 1x,path-to-another-image.jpg 600w 200h 2x,path-to-a-third-image.jpg

Read More...


网络层(下)

ICMP网际控制报文协议 ICMP报文是在IP数据报的一部分。因为IP数据报首部的检验和并不检验IP数据报的内容,因此不能保证经过传输的ICMP报文不产生差错。ICMP报文分为差错报告报文和询问报文。 路由选择算法 所有的在自治系统内部的路由选择协议都是要寻找一条最短的路径。 内部网关协议之RIP协议 特点: 只和相邻路由器交换信息 交换整个网络链路状态的路由表(较大,使用UDP协议传输) 固定时间间隔交换信息 优点:简单,好消息传

Read More...


网络层(上)

网络层提供两种服务 虚电路服务(OSI曾极力主张) 数据报服务(现TCP/IP体系使用) 网际协议IP网际协议是现在的TCP/IP体系最重要的两个协议之一,和它配套使用的主要有如下三个协议: 地址解析协议ARP(address resolution protocol) 网际控制报文协议ICMP(internet control message protocol) 网际组管理协议IGMP(internet group manage

Read More...


数据链路层

数据链路层的点对点信道和广播信道,PPP协议和CSMA/CD协议的特点 数据链路层的点对点信道和广播信道数据链路层使用的信道主要有以下两种类型: 点对点信道。这种信道使用一对一的点对点通信方式。 广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。 数据链路层传送的是帧 链路(link):是一条无源的点到点的物理线路段,中间没有任

Read More...


在关系数据库中,数据库模式是指定义数据库的结构,规定的域约束,参照完整性等。实例对应模式在某一时间的快照。关系模式和关系实例也如此。在这里,一个关系对应数据库的一张表,一个元组对应表内一行数据,属性对应字段。 形式化关系查询语言是SQL所基于的形式化模型,同时它也是其他关系查询语言的基础。 关系代数式一种过程化查询语言。它包含一个运算的集合,这些运算以一个或者两个关系作为输入,产生一个新的关系作为输出。关系代数的基本运算有:选择,投影,

Read More...


初识网络

计算机网络相关内容的小记 互联网组成 边缘部分 主机通信方式: 客户-服务器方式 对等连接方式(P2P) 核心部分 在核心部分起特殊作用的是路由器,它是一种专用计算机,但不是主机。 主要是实现分组交换,存储和转发 电路交换:建立连接,整个报文从源到终点,关闭连接 报文交换:整个报文传送到相邻节点,存储,查找交换机的转发表,转发 分组交换:单个分组(报文一部分)传送到相邻节点,存储,查找路由器的路由表,转发 计算机网络性

Read More...


这个文件是用来记录我学习linux的历程的,持续更新 0.0ing 2016.10 整个linux系统,都是对大小写敏感的 GNU/Linux的文件类型(一个文件由目录项、inode和数据块组成) 普通文件 目录文件 特殊文件/设备文件 链接文件和符号连接文件 Shell是一种具备特殊功能的程序,它是介于使用者和 UNIX/linux 操作系统之核心程序(kernel)间的一个接口。 linux命令=内部命令(help)+外

Read More...


物理层

物理层的任务 物理层的主要任务 提供传送数据通路 传输数据比特流 数据链路层可以直接通过物理层提供的服务收发数据比特流(帧)。 物理层的媒体包括架空明线、平衡电缆、光纤、无线信道等、计算机、终端等,调制解调器、各种插头、插座,LAN中的各种粗、细同轴电缆、T型接、插头,接收器,发送器,中继器等都属物理层的媒体和连接器。 数据(data)——运送消息的实体。 信号(signal)——数据的电气的或电磁的表现。 “模拟的”(anal

Read More...


su:Swith user 切换用户,切换到root用户 cat: Concatenate 串联 uname: Unix name 系统名称 df: Disk free 空余硬盘 du: Disk usage 硬盘使用率 chown: Change owner 改变所有者 chgrp: Change group 改变用户组 ps:Process Status 进程状态 tar:Tape archive 解压文

Read More...


什么是网关

网关是一种充当转换重任的计算机系统或设备。在使用不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。与网桥只是简单地传达信息不同,网关对收到的信息要重新打包,以适应目的系统的需求。同时,网关也可以提供过滤和安全功能。大多数网关运行在OSI 7层协议的顶层–应用层。 大家都知道,从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾

Read More...


1. mysql_connect() 描述:php连接mysql服务器 语法:resource \$link=@mysql_connect(\$hostname,\$username,\$passward); 参数: mysql.exe是mysql服务器的主应用程序。 -h代表MySQL数据库主机名(MySQL数据库端口号3306)。如:localhost或127.0.0.1 -u代表MySQL用户名。如:root -p代表MySQ

Read More...


软件 chrome + FireFox + QQ浏览器 ps + lightroom + coreldraw github + git node.js + npm jdk + eclipse + eclipse汉化包 + PHP Development Tools + C/C++ Development Tools subline text webstrom VMware XAMPP wps套装 电脑管家 qq

Read More...


关于代码

概念与命名 简言之,使用缩略词对多次出现的概念添加有意义的语境进行命名。 函数 函数设计应尽量让其功能单一,输入参数少为好,尽量属于同一抽象层次。 函数名只是一个指针,函数体的代码只是一段任何人都可以调用的代码,函数体里面的代码可以是动态的(根据你传进参数不一样而动态执行)也可以是静态的(一直都做同样的事)。构造函数也是函数,但是只有与new操作符连用,才会去为函数内的变量申请空间。比如在JAVA语言里,函数一般是放在类里,然后

Read More...


计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决。