- 数据库设计要合理(3F)
- 添加索引(普通索引、主键索引、唯一索引、全文索引)
- 分表分库技术(取模分表、水平分割、垂直分割)
- 读写分离
- 配置mysql最大连接数()my.ini
- mysql服务器升级
- 随时清理碎片化
- sql语句调优
MySQL优化方案
jquery常用方法总结
取值与赋值操作
1 | $("#ID").val(); //取value值 |
属性设置
1 | $("#ID").attr(key,value);//取得或设置匹配元素的属性值 |
显示和隐藏
1 | $("ID").hide(); //隐藏 |
事件处理
1 | $(document).ready(fn); |
外观效果
1 | $("#ID").addClass(class);//添加样式 |
Java中的String为什么是不可变的? -- String源码分析
什么是不可变对象?
众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其他的对象,引用类型指向的对象的状态也不能改变。
区分对象和对象的引用
对于Java初学者, 对于String是不可变对象总是存有疑惑。看下面代码:
1 | String s = "ABCabc"; |
打印结果为:
s = ABCabc
s = 123456
首先创建一个String对象s,然后让s的值为“ABCabc”, 然后又让s的值为“123456”。 从打印结果可以看出,s的值确实改变了。那么怎么还说String对象是不可变的呢? 其实这里存在一个误区: s只是一个String对象的引用,并不是对象本身。对象在内存中是一块内存区,成员变量越多,这块内存区占的空间越大。引用只是一个4字节的数据,里面存放了它所指向的对象的地址,通过这个地址可以访问对象。
也就是说,s只是一个引用,它指向了一个具体的对象,当s=“123456”; 这句代码执行过之后,又创建了一个新的对象“123456”, 而引用s重新指向了这个心的对象,原来的对象“ABCabc”还在内存中存在,并没有改变。内存结构如下图所示:
比特--字节--字符--编码
比特(bit) =(经过分组编码)=> 字节(Byte) =(经过字符集编码)=> 字符
比特=bit=位 是数据存储的最小单位
1字节=8比特=8bit=8位
字符 = 字节+字符集
原文 比特–字节–字符–编码
比特
计算机专业术语,是信息量单位,是由英文
BIT
音译而来。二进制数系统中,每个0或1就是一个位(bit),位是数据存储的最小单位。
二进制数的一位所包含的信息就是一比特,如二进制数0100就是4比特。
计算机中的CPU位数指的是CPU一次能处理的最大位数。例如32位计算机的CPU一次最多能处理32位数据。
- 比特就是 bit(可以简写为b),就是位,是数据存储的最小单位。
- bit=位=比特
字节
- 字节是现代计算机中连续的、固定数量的比特(二进制):八个比特位为一字节
- 英文Byte翻译就是字节
使用通俗的语言理解Restful
首先要明确一点:REST 实际上只是一种设计风格,它并不是标准。(所以你可以看到网上一大堆的各种最佳实践,设计指南,但是没有人说设计标准)。aisuhua/restful-api-design-references · GitHub
说说几个重要的概念:
1、REST 是面向资源的,这个概念非常重要,而资源是通过 URI 进行暴露。
URI 的设计只要负责把资源通过合理方式暴露出来就可以了。对资源的操作与它无关,操作是通过 HTTP动词来体现,所以REST 通过 URI 暴露资源时,会强调不要在 URI 中出现动词。比如:左边是错误的设计,而右边是正确的
1 | GET /rest/api/getDogs --> GET /rest/api/dogs 获取所有小狗狗 |
左边的这种设计,很明显不符合REST风格,上面已经说了,URI 只负责准确无误的暴露资源,而 getDogs/addDogs…已经包含了对资源的操作,这是不对的。相反右边却满足了,它的操作是使用标准的HTTP动词来体现。
2、REST很好地利用了HTTP本身就有的一些特征,如HTTP动词、HTTP状态码、HTTP报头等等
阅读更多...漫画算法:什么是跳跃表?
面向对象的理解
来源 什么是面向对象思想
回答一
面向对象编程注重的是:
1)数据和器行为的打包封装
2)程序的接口和实现的解耦
回答二
面向对象是相对于面向过程的,比如你要充话费,你会想,可以下个支付宝,然后绑定银行卡,然后在淘宝上买卡,自己冲,这种种过程。但是对于你女朋友就不一样了,她是面向“对象”的,她会想,谁会充话费呢?当然是你了,她就给你电话,然后你把之前的做了一遍,然后她收到到帐的短信,说了句,亲爱的。这就是面向对象!女的思维大部分是面向“对象”的!她不关心处理的细节,只关心谁可以,和结果!
回答三
给你一个任务,你要思考怎么做。
如果你的思维方式是:我先做什么,再做什么……这叫面向过程;
如果思维方式是:我先做一个什么东西来做这件事,再做一个什么东西来做那件事,然后它们怎么相互配合……这叫面向对象。
js选择器和jquery选择器
1 元素、属性、标签的关系
html文档由嵌套的html元素组成,一个html元素包含开始标签和结束标签。属性是html元素提供的附加信息。
下面的例子中定义了一个div元素
id、name、class是元素属性
而div是组成元素的标签
1 | <div id="test-div-id" name="test-div-name" class="test-div-class"></div> |
选择器的作用就是获取满足指定条件的元素。这里的条件可以是元素的id、name、标签名、class名,还可以根据元素的属性来进行选择。
js选择器
getElementById()通过元素ID获取元素
getElementsByName()通过元素Name获取元素
getElementsByTagName()通过元素的标签名称获取元素
getElementsByClassName()通过元素的CSS类来获取元素
JQuery选择器
阅读更多...Cookie与Session的区别
cookie和session都是为了解决HTTP协议是无状态的协议,使用cookie和session来记住用户的状态
Cookie
cookie的内容主要包括:名字,值,过期时间,路径和域。
路径与域一起构成cookie的作用范围。
若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。
若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。
session
而session机制采用的是一种在服务端保持状态的解决方案。seeion机制需要借助cookie保存sessionID,当浏览器禁用cookie时,可以通过URL重写,把session id附加在URL路径的后面。