`
xly_971223
  • 浏览: 1277669 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
架构师往往是有前瞻性的 这个前瞻性是在很多项目经验的基础上总结的 数据库设计中有三个范式,我们在设计时要不要遵守呢? 我认为你只要知道有这么个概念就行了 实际项目中按范式搞会害死人的 ----------------------------------- 回到正题 有一个项目访问量不大,业务很复杂,问数据库设计应该怎么做? 一定要业务优先,怎么样设计能够让你的业务处理起来更方便就怎么设计 不需要考虑性能 范式这些东西 同样是这个项目,如果访问量巨大,那么数据库的设计可能就完全不一样了 可能需要考虑动态数据静态数据分离,垂直切分, 水平切分等 ------------------------- ...
两个C++类之间要互引用可不想java那么方便 我们来看一下吧 A.h class A { B* b; }; B.h class B { A* a; } 在java 中这样应该就可以了 可是该死的C++不行 需要用到一个叫‘预定义’的玩意 就是在用class B之前先说明一下 如下: A.h class B; //预定义 class A { B* b; }; B.h class A; //预定义 class B { A* a; } 这下就行了
聪明的人,容易不务实 这是杜书伍说的 这里讲的聪明人是指智商方面的 ======================== 聪明人的逻辑推理能力比较强,你说个开头他能给你说出结尾,并且往往是正确的 聪明人反应比较快,因此在跟同事合作时会觉得他们反应很慢,自觉不自觉的会表露出轻蔑、不耐烦的情绪 但是逻辑推理这种事情是‘静态的’,跟程序一样 输入A 就会输出B  输入C就会输出D 而真正务实的事情都会收到环境和人的影响,而这两个因素是‘动态的’,推理在这儿不管用 尤其是人的因素更是不可捉摸,那么动态的务实我们如何掌握呢?有没有捷径呢? 很遗憾的告诉大伙,没有捷径! 举例说明吧 我们要对某手机开发一 ...
typedef常用格式为: typedef int INT; 但用在定义函数指针时就不是这样了 typedef char (* PFUN)(int); 这样就定义了一个函数指针类型PFUN char test(int a){return 'a';} char sddd(int a){return '5';} 这些函数都满足PFUN类型 用法: PFUN pFun; pFun = test; pFun(3);
最近研究C++ 先从最基本的概念理解 编译: 编译就是把源文件编译成目标文件,其主要工作是检查语法、函数与变量声明正确 编译只需要头文件即可,不需要函数的实现 编译的产出是一系列的.obj文件或者叫中间目标文件 链接: 链接是把这些中间目标链接成一个可执行的文件(.exe),其主要的工作是寻找函数的入口 如函数A中引用了函数B,那么链接程序需要定位函数B的位置并告知函数A lib文件 搞过java的都知道jar包,lib文件类似jar包,但同时必须配合.h文件一起使用 lib实际上是对.obj文件打了包 仅此而已

JVM内存结构

    博客分类:
  • java
把知道的java内存结构简单缕一缕 主要有这个几个 方法区 堆(分代的) 这两个算是比较清晰的 还有一个不大清晰的 JVM方法栈 方法区就是存放Class信息的 如类的继承层次,类的静态变量 有哪些字段 哪些方法等等 这块内存通过permSize maxPermSize来指定其大小 堆是保存对象的内存空间,你创建的每个对象都保存在堆中 堆的大小通过-Xms -Xmx来控制大小 通常设置 -Xms == -Xmx 堆是分代管理的,有新生代和旧生代 新创建的对象放在新生代,经过几轮GC仍然存活的会转到旧生代 大对象也可能直接分配到旧生代,至于多大要用-XX:PretenureSizeThres ...
很讨厌webservice框架配置的繁琐 尤其是axis系列 一怒之下直接用servlet开发了 其实也很简单,关键是要获取到请求soap和响应soap,可借助soapUI来生成 soapUI的使用这里不做介绍 生成请求soap和响应soap后关键就是解析soap了 直接用的java提供的API来解析 解析请求Soap 代码如下: public class SyncNotifySPReqDecoder { private static Logger logger = LoggerFactory.getLogger(SyncNotifySPReqDecoder.class); pu ...
想看一下List序列化后占用多少个 字节,测试程序如下: public static void main(String[] args) throws IOException{ int n = 2000; List<Integer> list = new LinkedList<Integer>(); for (int i = 0; i < n; i++) { list.add(i); } System.out.println("元素数:" + list.size()); ByteArrayOut ...
telnet localhost 11211 流量统计 stats 内存统计 stats slabs item统计(Items Statistics) stats items 源:http://articles.itecsoftware.com/web-development/testing-memcached-using-telnet-commands
linux上下文切换是指在进程的时间片用完 进程睡眠 进程阻塞 进程被抢占等事件发生导致当前进程不能继续占用cpu,而是切换另一个进程继续执行的过程 上下文切换时要保存当前进程的状态,装载另一进程的状态,这个会占用cpu 如果上下文切换过于频繁会浪费大量cpu时间,从而导致程序性能低下
同步IO与异步IO的区别 首先要明确一点:不同IO模型之间的差别本质上是CPU的参与方式 这里重点说一下各自的应用场景 如何选择同步还是异步呢? 主要有这么几个指标供参考 1. 并发数量 2. 接收字节数 3. 处理请求所需CPU时间 我们一个一个来考察 并发数 并发低的时候同步IO与异步IO差别不大 并发高时差别会比较明显,这要表现在 1. 开启线程数:如并发1000时,同步IO要开启1000个线程,1000个线程要占用很多内存,这是其一,其二1000个线程间切换的时间也是很可观的;异步IO则可避免这个问题 接收字节数 接收字节越少被阻塞的概率越低,同步IO与异步IO的差别就越小 ...

java CAS原语

    博客分类:
  • java
java 中的synchronized关键字是悲观锁 也叫独占锁 所谓悲观锁就是某一线程独占资源,其他线程只能干等着,这种锁在高并发中性能很差 还有一种实现锁的方式是乐观锁 乐观锁实际上并不加锁,当计算遇到冲突或者说前后不一致时会重试 直到成功 乐观锁采用的机制叫CAS compare and swap CAS有3个操作数 内存值V 要跟内存值做比较的值A 和 新值 B 其操作逻辑为 while(true){ if(V == A){ V = B; return ; }else{ A = V; } } CAS的操作对象为volatile类型 volatil ...

理解CountDownLatch

    博客分类:
  • java
字面意思是倒计时类 类名其实说的很形象,倒数到0时线程解除阻塞,继续往下执行 测试类 public class TestCDL { private static CountDownLatch countDownLatch = new CountDownLatch(3); public static void test(){ Thread thread = new Thread(){ @Override public void run() { try { //阻塞在这儿了 countDownLatch.await(); } ca ...
package net.rubyeye.xmemcached.example; import java.io.IOException; import java.net.InetSocketAddress; import java.util.concurrent.TimeoutException; import net.rubyeye.xmemcached.KeyIterator; import net.rubyeye.xmemcached.MemcachedClient; import net.rubyeye.xmemcached.Memcac ...
java中的io与nio主要区别在于阻塞上 io采用的是阻塞 nio可自定义 阻塞与非阻塞到底有什么不同?其底层是怎么实现的呢? 从内核的角度来理解,就是进程的阻塞 运行状态的切换 阻塞实际上是进程在等待资源,而资源没有就绪( ...
Global site tag (gtag.js) - Google Analytics